SQL Server 使用触发器写log(格式参考)

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 11:38   11   0
CREATE TRIGGER triggerName      --触发器名称
 ON tblGoods             --表名,这个触发器是针对哪个表的
 FOR INSERT,DELETE,UPDATE
AS 
--系统自动在内存中创建deleted表或inserted表,触发器执行完成后,自动删除。
BEGIN
 --Insert
 IF(EXISTS(SELECT 1 FROM Inserted) AND NOT EXISTS(SELECT 1 FROM Deleted))
 BEGIN
  --从Inserted表中取得insert的数据更新到log表
  INSERT INTO tblGoodsLog SELECT * FROM Inserted
        END
    
 --Delete
 IF(NOT EXISTS(SELECT 1 FROM Inserted) AND EXISTS(SELECT 1 FROM Deleted))
 BEGIN
  --从Deleted表中取得delete掉的数据更新到log表
  INSERT INTO tblGoodsLog SELECT * FROM Deleted
        END

 --Update
 IF(EXISTS(SELECT 1 FROM Inserted) AND EXISTS(SELECT 1 FROM Deleted))
 BEGIN
  --由于update相当于将原来的数据删掉之后再插入,所以写log时可以先
  --从Deleted表去得删除的数据(更新前的数据)插入到log表,再从Inserted
  --表取插入的数据(更新后的数据)插入到log表中
  INSERT INTO tblGoodsLog SELECT * FROM Deleted
  INSERT INTO tblGoodsLog SELECT * FROM Inserted
        END

END 

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP