ENABLE TRIGGER (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
DML トリガー、DDL トリガー、またはログオン トリガーを有効化します。
構文
ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
引数
schema_name
トリガーが属するスキーマの名前を指定します。 schema_name は DDL トリガーやログオン トリガーでは指定できません。
trigger_name
有効化するトリガーの名前です。
ALL
ON 句のスコープで定義されたすべてのトリガーを有効化することを示します。
object_name
DML トリガー trigger_name が実行用に作成されたテーブルまたはビューの名前を指定します。
DATABASE
DDL トリガーの場合、trigger_name が、データベース スコープで実行するために作成または変更されたことを示します。
ALL SERVER
適用対象: SQL Server 2008 (10.0.x) 以降。
DDL トリガーの場合、trigger_name が、サーバー スコープで実行するために作成または変更されたことを示します。 ALL SERVER はログオン トリガーにも適用されます。
Note
このオプションは、包含データベースでは使用できません。
解説
トリガーを有効化しても、トリガーが再作成されるわけではありません。 無効化されたトリガーは、引き続き現在のデータベースのオブジェクトとして残りますが、起動されることはありません。 トリガーを有効にするには、もともとプログラミングされた Transact-SQL ステートメントのいずれかが実行されたときに起動するようにします。 トリガーを無効化するには、DISABLE TRIGGER を使います。 テーブルに定義された DML トリガーも、ALTER TABLE を使用して無効または有効にできます。
アクセス許可
DML トリガーを有効化するには、少なくとも、そのトリガーが作成されたテーブルまたはビューに対する ALTER 権限が必要です。
サーバー スコープ (ON ALL SERVER) 付きの DDL トリガーまたはログオン トリガーを有効化するには、サーバーに対する CONTROL SERVER 権限が必要です。 DDL トリガーをデータベース スコープ (ON DATABASE) で有効化するには、少なくとも、現在のデータベースに対する ALTER ANY DATABASE DDL TRIGGER 権限が必要です。
例
A. テーブル上の DML トリガーを有効化する
次の例では、AdventureWorks データベースのテーブル Address
上に作成されたトリガー uAddress
を無効化し、次に有効化します。
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
ENABLE Trigger Person.uAddress ON Person.Address;
GO
B. DDL トリガーを有効化する
次の例では、データベース スコープの DDL トリガー safety
を作成し、無効にします。
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 トリガーを有効化します。
適用対象: SQL Server 2008 (10.0.x) 以降。
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)