現有業務表 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