虚拟表Inserted
虚拟表Deleted
在表记录新增时
存放新增的记录
不存储记录
改动时
存放用来更新的新记录
存放更新前的记录
删除时
不存储记录
存放被删除的记录
以下举一个在机房收费系统重构个人版中用到的易于理解的关于触发器的小样例 在我们删除T_OnWork_info表中的正在上机工作记录时,同一时候向T_Work_info表中写入工作记录,还同一时候将T_Admin_info表中的IsOn字段改为FalseCREATE TRIGGER trigger_delOnWork ON T_OnWork_info FOR DELETE AS DECLARE @name varchar(10) DECLARE @loginDate varchar(10) DECLARE @loginTime varchar(10) DECLARE @logoutDate varchar(10) DECLARE @logoutTime varchar(10) DECLARE @comName varchar(10) SELECT @name =(SELECT NAME FROM deleted ) SELECT @loginDate =(SELECT loginDate FROM deleted )-----deleted表用于存储T_OnWork表中已经删除的记录 SELECT @loginTime =(sELECT loginTime FROM deleted ) SELECT @comName =(SELECT comName FROM deleted ) SET @logoutDate=convert(varchar(10),getdate(),101) SET @logoutTime =convert(varchar(10),getdate(),108) if (SELECT COUNT(*) FROM deleted )=1 BEGIN INSERT INTO T_Work_info(Name,loginDate,loginTime,logoutDate,logoutTime,comName) VALUES(@name,@loginDate ,@loginTime ,@logoutDate,@logoutTime,@comName ) UPDATE T_Admin_info SET IsOn='False' WHERE Name=(SELECT Name FROM deleted ) ROLLBACK TRAN --事务回滚 END怎么样,触发器非常easy吧,大家能够尝试着用用,触发器+事务的回滚机制。非常容易地做到了为代码减负
版权声明:本文博主原创文章。博客,未经同意不得转载。
转载于:https://www.cnblogs.com/bhlsheji/p/4916423.html