SQL server触发器

前言

业务需要对某些表数据进行日志记录,记录新增数据的日志和修改数据对比后的日志,创建sql触发器来自动记录这些数据就变得极为方便。


触发器原理

当你的sql执行 INSERT,DELETE,UPDATE语句时系统自动在内存中创建deleted表或inserted表简称d表和i表,存在于内存当中,只能读取使用完自动删除。
i表:临时保存了插入或更新后的记录行
d表:临时保存了删除或更新前的记录行


创建步骤

1 先找到需要建触发器的表,点开找到触发器,右键新建触发器
在这里插入图片描述
2 开始编写sql语句

CREATE TRIGGER trg_TableName -- 触发器的名称
   ON  [dbo].[tStockSKU] -- 需要监控的表
   AFTER UPDATE -- 当执行更新语句时触发
AS 
BEGIN
	DECLARE @LogDescription NVARCHAR(MAX) = '';
	DECLARE @userid uniqueidentifier;
    -- 获取修改记录
    SELECT @LogDescription = 
		
		CASE 
            WHEN i.ChineseName <> d.ChineseName THEN '原中文名称:' + d.ChineseName + ' 更新为:' + i.ChineseName  + ';'
            ELSE ''
        END +
		CASE 
            WHEN i.EnglishName <> d.EnglishName THEN '原英文名称:' + d.EnglishName + ' 更新为:' + i.EnglishName  + ';'
            ELSE ''
        END 
		,@userid=i.UpdateUserId
    FROM INSERTED i
    JOIN DELETED d ON i.OwnGuid = d.OwnGuid;
	if @LogDescription is not null and @LogDescription <> ''
		insert into tSysLog([type],[title],[Keys],[Content],[UpdateUserId],[UpdateDate]) 
		values (1999,'表修改记录','',@LogDescription,@userid,getdate())


END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值