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。有没有大神帮我解决一下
...全文
42 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qwe想 2015-08-06
自己搞定了。结贴
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-08-06 09:22
社区公告
暂无公告