注册 登录
编程论坛 SQL Server论坛

sql查询语句 求助

i63283265 发布于 2008-10-09 22:00, 1316 次点击
有1表 a
create table a
(date datetime,
 name varchar(10),
 a3 int)
现写插入触发器,如果表中有相同的日期和名称,则回滚事务,谢谢了
下面是我写的
create trigger tri_insert_a on a
for insert as
declare @d1 datetime,
        @d2 varchar(10),
        @d3 int
select @d1=date,@d2=name,@d3=a3 from inserted
if exists(select @d1 from inserted where @d1 in(select date from a))
begin
    rollback tran                  
end
事务总是回滚,及时是空表也一样插不进去
6 回复
#2
球球2008-10-10 13:31
for insert as ==>instead of insert
#3
宠物在线2008-10-10 15:00
这个还不是很懂,不过学习了。不知道楼主解决了问题没有?
#4
伤狼2008-10-10 15:02
引用球球的回复  

具体不写
#5
ingbingyuw2008-10-12 23:34
不是要日期和名称都有才回滚吗?
if exists(select @d1 from inserted where @d1+@d2 in(select date+name from a))
这样才行吧
#6
coolma882008-10-14 18:21
create trigger tri_insert_a on a
for insert as
if ((select top 1 count(*) from a group by name,date order by count(*) desc)>=2)
begin
    rollback tran                  
end

[[it] 本帖最后由 coolma88 于 2008-10-15 17:35 编辑 [/it]]
#7
nannansun2008-10-17 21:46
create table a
(date datetime,
name varchar(10),
a3 int)

想问下lz 这样的定义 对吗


我们现在学的貌似 name 过不去吧。。。因为变成蓝色的了。 不可以做成列的名字吧。。。

不知道说的对不。。。
1