DISABLE TRIGGER (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
トリガーを無効にします。
構文
DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
schema_name
トリガーが属するスキーマの名前を指定します。 DDL トリガーまたはログオン トリガーでは schema_name を指定できません。
trigger_name
無効にするトリガーの名前です。
ALL
ON 句の有効範囲で定義されたすべてのトリガーを無効にすることを示します。
注意事項
SQL Server を使用すると、マージ レプリケーション用にパブリッシュされたデータベースにトリガーが作成されます。 パブリッシュされたデータベースで ALL を指定すると、これらのトリガーが無効になり、レプリケーションが中断されます。 現在のデータベースがマージ レプリケーション用にパブリッシュされていないことを確認してから、ALL を指定してください。
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 ステートメントを実行しても、トリガーは起動しません。 トリガーは、ENABLE TRIGGER を使用することにより再度有効にできます。 テーブルに定義された DML トリガーも、ALTER TABLE を使用して無効または有効にできます。
ALTER TRIGGER ステートメントを使用してトリガーを変更すると、トリガーが有効になります。
アクセス許可
DML トリガーを無効にするには、少なくともトリガーが作成されたテーブルまたはビューに対する ALTER 権限が必要です。
サーバー スコープ (ON ALL SERVER) 付きの DDL トリガーまたはログオン トリガーを無効にするには、サーバーでの CONTROL SERVER 権限が必要です。 データベース スコープ (ON DATABASE) の DDL トリガーを無効にするために、ユーザーには少なくとも、現在のデータベースに対する ALTER ANY DATABASE DDL TRIGGER 権限が必要です。
例
この記事の Transact-SQL コード サンプルは AdventureWorks2022
または AdventureWorksDW2022
サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクトのホーム ページからダウンロードできます。
A. テーブルの DML トリガーを無効にする
次の例では、テーブル Person
に作成されたトリガー uAddress
を無効にします。
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)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示