ENABLE TRIGGER (Transact-SQL)
更新 : 2006 年 12 月 12 日
DML トリガ、DDL トリガ、またはログオン トリガを有効化します。
構文
ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
引数
- schema_name
トリガが属するスキーマの名前を指定します。DDL トリガまたはログオン トリガの場合、schema_name は指定できません。
- trigger_name
有効化するトリガの名前です。
- ALL
ON 句のスコープで定義されたすべてのトリガを有効化することを示します。
- object_name
DML トリガ trigger_name が実行用に作成されたテーブルまたはビューの名前を指定します。
- DATABASE
DDL トリガの場合、trigger_name が、データベース スコープで実行するために作成または変更されたことを示します。
- ALL SERVER
DDL トリガまたはログオン トリガの場合、trigger_name が、サーバー スコープで実行するために作成または変更されたことを示します。
解説
トリガを有効化しても、トリガが再作成されるわけではありません。無効化されたトリガは、引き続き現在のデータベースのオブジェクトとして残りますが、起動されることはありません。トリガを有効化すると、そのトリガがプログラムされているイベントが実行されたときに起動されます。トリガを無効化するには、DISABLE TRIGGER を使用します。テーブルに定義された DML トリガも、ALTER TABLE を使用して無効化または有効化できます。
権限
DML トリガを有効化するには、少なくとも、そのトリガが作成されたテーブルまたはビューに対する ALTER 権限が必要です。
DDL トリガまたはログオン トリガをサーバー スコープ (ON ALL SERVER) で有効化するには、サーバーでの CONTROL SERVER 権限が必要です。DDL トリガをデータベース スコープ (ON DATABASE) で有効化するには、少なくとも、現在のデータベースでの ALTER ANY DATABASE DDL TRIGGER 権限が必要です。
例
A. テーブル上の DML トリガを有効化する
次の例では、テーブル Address
上に作成されたトリガ uAddress
を無効化し、次に有効化します。
USE AdventureWorks;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
ENABLE Trigger Person.uAddress ON Person.Address;
GO
B. DDL トリガを有効化する
次の例では、DDL トリガ safety
をデータベース スコープで作成し、次に無効化します。
IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK;
GO
DISABLE TRIGGER safety ON DATABASE;
GO
ENABLE TRIGGER safety ON DATABASE;
GO
C. 同じスコープで定義されたすべてのトリガを有効化する
次の例では、サーバー スコープで作成されたすべての DDL トリガおよびログオン トリガを有効化します。
USE AdventureWorks;
GO
ENABLE Trigger ALL ON ALL SERVER;
GO
参照
関連項目
DISABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|