DDL トリガー

SQL Server のトリガー構築と最適化

Florin Angelescu

Instructor

定義と特性

DML トリガー

  • DML 文に関連するイベント INSERT, UPDATE, DELETE
  • AFTER または INSTEAD OF を使用
  • テーブルまたはビューに付与
  • 特殊テーブル inserted と deleted

DDL トリガー

  • DDL 文に関連するイベント CREATE, ALTER, DROP
  • AFTER のみ使用
  • データベースまたはサーバーに付与
  • 特殊テーブルなし
SQL Server のトリガー構築と最適化

AFTER と FOR

CREATE TRIGGER DatabaseChangeLog
FOR CREATE_TABLE
[...]
SQL Server のトリガー構築と最適化

AFTER と FOR

CREATE TRIGGER TrackDatabaseTables
FOR CREATE_TABLE
[...]

AFTER = FOR

SQL Server のトリガー構築と最適化

DDL トリガーの前提条件

  • 対象オブジェクト(サーバーまたはデータベース)
  • トリガーの説明
  • トリガーの発火イベント(DDL)
  • トリガー名
  • DATABASE
  • 定義変更のログ用テーブル
  • CREATE_TABLE,ALTER_TABLE,DROP_TABLE
  • TrackTableChanges
SQL Server のトリガー構築と最適化

DDL トリガーの定義

CREATE TRIGGER TrackTableChanges

ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS INSERT INTO TablesChangeLog (EventData, ChangedBy) VALUES (EVENTDATA(), USER);
SQL Server のトリガー構築と最適化

DML トリガーの発火イベントを防止する

CREATE TRIGGER PreventTableDeletion
ON DATABASE
FOR DROP_TABLE

AS RAISERROR ('このデータベースからテーブルを削除することは許可されていません。', 16, 1); ROLLBACK;
SQL Server のトリガー構築と最適化

Ayo berlatih!

SQL Server のトリガー構築と最適化

Preparing Video For Download...