Share via


DISABLE TRIGGER (Transact-SQL)

トリガーを無効にします。

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

構文

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]

引数

  • schema_name
    トリガーが属するスキーマの名前を指定します。 schema_name は、DDL トリガーまたはログオン トリガーに対しては指定できません。

  • trigger_name
    無効にするトリガーの名前を指定します。

  • ALL
    ON 句の有効範囲で定義されたすべてのトリガーを無効にすることを示します。

    注記注意

    SQL Server では、マージ レプリケーション用にパブリッシュされたデータベースにトリガーが作成されます。 パブリッシュされたデータベースで ALL を指定すると、これらのトリガーが無効になり、レプリケーションが中断されます。 現在のデータベースがマージ レプリケーション用にパブリッシュされていないことを確認してから、ALL を指定してください。

  • object_name
    DML トリガー trigger_name が実行用に作成されたテーブルまたはビューの名前を指定します。

  • DATABASE
    DDL トリガーの場合、trigger_name が、データベース スコープで実行するために作成または変更されたことを示します。

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

    注意

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

説明

既定では、トリガーは作成されたときに有効になります。 トリガーを無効にしてもトリガーは削除されず、 オブジェクトとして現在のデータベースに残りますが、 トリガーがプログラムされた Transact-SQL ステートメントを実行しても、トリガーは起動しません。 トリガーは、ENABLE TRIGGER を使用することにより再度有効にできます。 テーブルに定義された DML トリガーも、ALTER TABLE を使用して無効または有効にできます。

権限

DML トリガーを無効にするには、少なくともトリガーが作成されたテーブルまたはビューに対する ALTER 権限が必要です。

サーバー スコープ (ON ALL SERVER) 付きの DDL トリガーまたはログオン トリガーを無効化するには、サーバーでの CONTROL SERVER 権限が必要です。 データベース スコープ (ON DATABASE) の DDL トリガーを無効にするには、現在のデータベースに対する ALTER ANY DATABASE DDL TRIGGER 権限が必要です。

使用例

A. テーブルの DML トリガーを無効にする

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

USE AdventureWorks2012;
GO
DISABLE 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

C. 同じスコープに定義されたすべてのトリガーを無効にする

次の例では、サーバー スコープで作成されたすべての DDL トリガーを無効化します。

USE AdventureWorks2012;
GO
DISABLE Trigger ALL ON ALL SERVER;
GO

関連項目

参照

ENABLE TRIGGER (Transact-SQL)

ALTER TRIGGER (Transact-SQL)

CREATE TRIGGER (Transact-SQL)

DROP TRIGGER (Transact-SQL)

sys.triggers (Transact-SQL)