適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
トリガーを無効にします。
構文
DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
引数
schema_name
トリガーが属するスキーマの名前を指定します。 DDL トリガーまたはログオン トリガーでは schema_name を指定できません。
trigger_name
無効にするトリガーの名前です。
ALL
ON 句の有効範囲で定義されたすべてのトリガーを無効にすることを示します。
注意事項
SQL Server を使用すると、マージ レプリケーション用にパブリッシュされたデータベースにトリガーが作成されます。 パブリッシュされたデータベースで ALL を指定すると、これらのトリガーが無効になり、レプリケーションが中断されます。 現在のデータベースがマージ レプリケーション用にパブリッシュされていないことを確認してから、ALL を指定してください。
object_name
DML トリガー trigger_name が実行用に作成されたテーブルまたはビューの名前を指定します。
DATABASE
DDL トリガーの場合、trigger_name が、データベース スコープで実行するために作成または変更されたことを示します。
全サーバー
適用対象: SQL Server 2008 (10.0.x) 以降。
DDL トリガーの場合、trigger_name が、サーバー スコープで実行するために作成または変更されたことを示します。 ALL SERVER はログオン トリガーにも適用されます。
Note
このオプションは、包含データベースでは使用できません。
解説
既定では、トリガーは作成されたときに有効になります。 トリガーを無効にしてもトリガーは削除されず、 オブジェクトとして現在のデータベースに残りますが、 トリガーがプログラムされた Transact-SQL ステートメントを実行しても、トリガーは起動しません。 トリガーは ENABLE TRIGGERを使うことで再有効化できます。 テーブル上で定義されたDMLトリガーは、 ALTER TABLEを使うことで無効化または有効化することも可能です。
ALTER TRIGGER文を使ってトリガーを変更するとトリガーが有効になります。
アクセス許可
DML トリガーを無効にするには、少なくともトリガーが作成されたテーブルまたはビューに対する ALTER 権限が必要です。
サーバー スコープ (ON ALL SERVER) 付きの DDL トリガーまたはログオン トリガーを無効にするには、サーバーでの CONTROL SERVER 権限が必要です。 データベーススコープ(ON DATABASE)を持つDDLトリガーを無効にするには、最低限、現在のデータベースでDDLTRIGGERの権限をALTERDATABASE持つ必要があります。
例
この記事のコード サンプルでは、AdventureWorks2025 または AdventureWorksDW2025 サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクト ホーム ページからダウンロードできます。
A. テーブルの DML トリガーを無効にする
次の例では、テーブル uAddress に作成されたトリガー Person を無効にします。
DISABLE 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
C. 同じスコープに定義されたすべてのトリガーを無効にする
次の例では、サーバー スコープで作成された DDL トリガーをすべて無効にします。
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)