sqlserver触发器问题
qwe想 2015-08-06 09:22:49 最近在做一个触发器,遇到了点问题,不知道应该怎么改.
表结构如下:
表一:
id 任务号 ID1 ID2
1 001 0 0
2 001 0 0
3 001 0 0
表二
ID 数量
1 0
2 3
3 4
表一的ID1和ID2用的是表二的ID
当表1的ID1或者ID2使用表二的ID时,表二的ID对应的数量+1
修改之前ID1或者ID2如果不等于0,那么在修改ID1或者ID2的时候,原来的ID或者ID2对应的表二ID的数量要-1
我写了两个触发器分别对应修改ID1和ID2的,我贴一个修改ID1的触发器:
ALTER trigger t_test
on 表一
for update
as if update(ID1)
begin
declare @_ID INT select @_ID= ID1 from INSERTED --获取新设置的ID
declare @_ID_old INT select @_ID_old= ID1 from DELETED --获取原本的ID
if @_ID =0 and @_ID_old !=0
begin
update 表二 Set 数量-=1 where ID=@_ID_old
end
else if @_ID !=1 and @_ID_old !=0
begin
update 表二 Set 数量+=1 where id=@_ID
update 表二 Set 数量-=1 where id=@_ID_old
end
else if @_ID !=0 and @_ID_old =0
begin
update 表二 Set 数量+=1 where id=@_ID
end
end
但是上述的触发器在执行update 表一 set ID1=1 where id=1 的时候没问题。但是如果一次执行了多条这个触发就没法用了:
update 表一 set ID1=1 where 任务号=001。有没有大神帮我解决一下