次の方法で共有


DDL トリガについて

DDL トリガは標準的なトリガと同様、イベントに応じてストアド プロシージャを起動します。ただし、DML トリガとは異なり、テーブルまたはビューに対する UPDATE、INSERT、DELETE の各ステートメントに呼応して起動されることはありません。その代わりに、さまざまなデータ定義言語 (DDL) イベントに呼応して起動されます。これらのイベントは、主にキーワード CREATE、ALTER、および DROP で始まる Transact-SQL ステートメントに対応します。DDL と同様の操作を実行する特定のシステム ストアド プロシージャも DDL トリガを起動できます。

重要な注意事項重要

DDL トリガはテストして、実行されているシステム ストアド プロシージャに応答するかどうか、確認してください。たとえば、CREATE TYPE ステートメントおよび sp_addtype ストアド プロシージャはどちらも、CREATE_TYPE イベントで作成される DDL トリガを起動します。

DDL トリガは、データベース操作の監査や管理などの管理タスクに使用できます。

DDL トリガは、次のような場合に使用します。

  • データベース スキーマへの特定の変更を回避したい場合。

  • データベース スキーマの変更に対して、データベース内でなんらかの処理を実行する場合。

  • データベース スキーマの変更またはイベントを記録する場合。

DDL トリガは、起動元の DDL ステートメントが実行されるまで、起動されません。DDL トリガを INSTEAD OF トリガとして使用することはできません。

次の例では、DDL トリガを使用して、データベース内のテーブルの変更または削除を回避する方法を示します。

CREATE TRIGGER safety 
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT 'You must disable Trigger "safety" to drop or alter tables!' 
   ROLLBACK ;

DDL トリガは、現在のデータベースまたは現在のサーバーで処理されている Transact-SQL イベントに応答して起動されます。トリガのスコープは、イベントによって異なります。DDL トリガのスコープの詳細については、「DDL トリガの設計」を参照してください。

AdventureWorks サンプル データベースで使用できる DLL トリガの例を入手するには、SQL Server Management Studio のオブジェクト エクスプローラで、AdventureWorks データベースの [プログラミング] フォルダにある [データベース トリガ] フォルダを開きます。[ddlDatabaseTriggerLog] を右クリックし、[データベース トリガをスクリプト化] をクリックします。既定では、DDL トリガ ddlDatabaseTriggerLog は無効になっています。