トリガーを使ったテーブル監査
会社は、重要なテーブルの変更履歴をすべて追跡することにしました。その1つが 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;