sqlserver触发器问题
最近在做一个触发器,遇到了点问题,不知道应该怎么改.
表结构如下:
表一:
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。有没有大神帮我解决一下
表结构如下:
表一:
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。有没有大神帮我解决一下
...全文
相关推荐
MSSQL2008R2 触发器问题代码
MSSQL2008R2 触发器问题代码
SQLServer触发器并发死锁问题分析及解决方案
在SQL Server中,触发器(Triggers)是一种特殊的存储过程,当特定的事件(如 INSERT、UPDATE、DELETE)发生时自动执行。然而,触发器在并发环境下可能会遇到一些问题,特别是与性能和数据一致性相关的问题。以下是一些常见的并发问题及其解决方法。
mssql触发器
mssql触发器,http://jingyan.baidu.com/article/77b8dc7f2b82416175eab65b.html
mssql系列
NULL 博文链接:https://michaelzqm.iteye.com/blog/758085
MsSql.zip_WEB开发_ASP_
MsSql 触发器后门 MsSql 触发器后门


疑难问题
