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。有没有大神帮我解决一下
...全文
63 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwe想 2015-08-06
  • 打赏
  • 举报
回复
自己搞定了。结贴

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧