使用触发器进行表审计
公司决定跟踪对所有关键表所做的更改。其中一张表是 Orders。
对 Orders 内容做出的任何修改,都应插入到 TablesAudit 中。
本练习是课程的一部分
在 SQL Server 中构建与优化触发器
练习说明
- 在
Orders表上创建一个新的AFTER触发器。 - 将触发器设置为在
INSERT、UPDATE和DELETE语句时触发。
交互式实操练习
通过完成这段示例代码来试试这个练习。
-- Add a trigger that tracks table changes
___ ___ OrdersAudit
ON Orders
___ INSERT, ___, ___
AS
DECLARE @Insert BIT = 0;
DECLARE @Delete BIT = 0;
IF EXISTS (SELECT * FROM inserted) SET @Insert = 1;
IF EXISTS (SELECT * FROM deleted) SET @Delete = 1;
INSERT INTO ___ (TableName, EventType, UserAccount, EventDate)
SELECT 'Orders' AS TableName
,CASE WHEN @Insert = 1 AND @Delete = 0 THEN 'INSERT'
WHEN @Insert = 1 AND @Delete = 1 THEN 'UPDATE'
WHEN @Insert = 0 AND @Delete = 1 THEN 'DELETE'
END AS Event
,ORIGINAL_LOGIN() AS UserAccount
,GETDATE() AS EventDate;