sqlserver触发器问题

qwe想 qwe想 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近在做一个触发器,遇到了点问题,不知道应该怎么改.
表结构如下:

表一:
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。有没有大神帮我解决一下
...全文
评论 1
收藏 已收藏
分享
返回顶部
qwe想
疑难问题 22,298 成员 121,727 内容