触发器update

时间:2026-05-22 22:19:58编辑:莆田seo君

sql如何取得触发器update前的值

具体操作步骤如下:1、首先,创建一个触发器,要求是在AddTable表上创建update触发器,如下图所示,然后进入下一步。  2、其次,触发器将触发,并显示:the table was updated,如下图所示,然后进入下一步。   3、接着,对AddTable表中的数据执行更改操作,如下图所示,然后进入下一步。   4、然后,完成上述步骤后,会发现触发了触发器并输出了设置的文本,如下图所示,然后进入下一步。   5、随后,只需要更改create为alter,再修改逻辑,如下图所示,然后进入下一步。   6、接着,如果要查看某个触发器的内容,请直接运行:exec sp_helptext (触发器名),如下图所示,然后进入下一步。   7、最后,执行另一项测试以更改AddTable表,并发现触发update触发器后,由于数据保护,该触发器被中止,如下图所示。这样,问题就解决了。    

sqlserver 触发器 怎么获取更新前的值

更新的动作你可以分2步理解,先delete ,再insert所以,前的值在 deleted里 后的值在 inserted里 create trigger t_ATDATEState_updateon listfor updateasif update(ATDATEState)begin declare @b_ATDATEState nvarchar(200) --修改之前的 declare @S_ATDATEState nVARCHAR(200) --修改之后的 declare @S_id INT SELECT @S_ATDATEState= ATDATEState FROM INSERTED --从更新后的副本表(临时表)里面 获得要修改后的状态 select @S_id=id,@b_ATDATEState=ATDATEState from deleted --从之前删掉的临时表里面获取原来的值 if @S_ATDATEState is null begin set @S_ATDATEState='0' end if @b_ATDATEState is null begin set @b_ATDATEState='0' end --如果修改前为2,3,4 降低了状态 向下修改 并且 修改后的状态和修改前不一样 if ((convert(int,@b_ATDATEState)>=2 and convert(int,@S_ATDATEState)@S_ATDATEState)) begin insert into dbo.operate(c_id,before_ATDATEState,after_ATDATEState,o_ip,o_type) values(@S_id,@b_ATDATEState,@S_ATDATEState,'','状态不正常,向下降低了') end if(convert(int,@b_ATDATEState)=2) begin insert into dbo.operate(c_id,before_ATDATEState,after_ATDATEState,o_ip,o_type) values(@S_id,@b_ATDATEState,@S_ATDATEState,'','状态升高') endend

上一篇:机械检测

下一篇:没有了