始める無料で始める

トリガーを使ったテーブル監査

会社は、重要なテーブルの変更履歴をすべて追跡することにしました。その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;
コードを編集して実行