SQL server 触发器(监控表数据 某字段更新后触发)

现有业务表 Business_CustomerRisksBasicInfoStatus
程序修改其中 [HomeVisitReportCount] [LawyerLetterCount] 两列时未记日志、
由触发器实现监控目的、
具体sql如下、

创建日志记录表


CREATE TABLE [dbo].[tb_RisksStatusLog](
	[Id] [UNIQUEIDENTIFIER] NOT NULL CONSTRAINT [DF_tb_RisksStatusLog_Id]  DEFAULT (NEWID()),
	[Operate] [VARCHAR](50) NOT NULL,    ---操作
	[UpdateColumn] [VARCHAR](50) NULL,  ---修改的列
	[ApplicationNumber] [VARCHAR](50) NULL,  ---业务编号
	[OldValue] [INT] NULL,   -----旧值
	[NewValue] [INT] NULL,   -----新值
	[OperatedAt] [DATETIME] NOT NULL CONSTRAINT [DF_tb_RisksStatusLog_OperatedAt]  DEFAULT   (GETDATE())     ---修改时间
) ON [PRIMARY]

创建触发器

   CREATE TRIGGER [dbo].[tr_RisksBasicInfoStatus]
    ON [dbo].[Business_CustomerRisksBasicInfoStatus] AFTER UPDATE,INSERT,DELETE
    AS
    

    BEGIN 
   
      DECLARE @op VARCHAR(10)
   SELECT @op=CASE WHEN EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
                   THEN 'Update'
                   WHEN EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
                   THEN 'Insert'
                   WHEN NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
                   THEN 'Delete' END


       IF UPDATE(HomeVisitReportCount)  
       BEGIN
       INSERT INTO dbo.tb_RisksStatusLog
               ( 
                 Operate ,
				 UpdateColumn,
                 ApplicationNumber ,
                 OldValue ,
                 NewValue 
               ) 
         SELECT @op,'HomeVisitReportCount',n.ApplicationNum,o.HomeVisitReportCount,n.HomeVisitReportCount  
         FROM inserted n
         LEFT JOIN deleted o ON o.id=n.id
       END
   IF UPDATE(LawyerLetterCount)   
       BEGIN
       INSERT INTO dbo.tb_RisksStatusLog
               ( 
                 Operate ,
				 UpdateColumn,
                 ApplicationNumber ,
                 OldValue ,
                 NewValue 
               ) 
         SELECT @op,'LawyerLetterCount',n.ApplicationNum,o.LawyerLetterCount,n.LawyerLetterCount  
         FROM inserted n
         LEFT JOIN deleted o ON o.id=n.id
       END
    END
 

搞定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为什么不问问神奇的海螺呢丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值