Share via


ENABLE TRIGGER (Transact-SQL)

DML トリガー、DDL トリガー、またはログオン トリガーを有効化します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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
    DDL トリガーの場合は、trigger_name が、サーバー スコープで実行するために作成または変更されたことを示します。 ALL SERVER はログオン トリガーにも適用されます。

    注意

    このオプションは、包含データベースでは使用できません。

説明

トリガーを有効化しても、トリガーが再作成されるわけではありません。 無効化されたトリガーは、引き続き現在のデータベースのオブジェクトとして残りますが、起動されることはありません。 トリガーを有効化すると、そのトリガーがプログラムされている 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 トリガーを有効化する

次の例では、テーブル Address 上に作成されたトリガー uAddress を無効化し、次に有効化します。

USE AdventureWorks2012;
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 AdventureWorks2012;
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)