全トリガー(trigger) を無効化(disable) / 有効化(enable) する

トリガー(trigger) を無効化(disable) / 有効化(enable) するには?

一時的に全トリガー (trigger) を無効化 (disable) したい時があるかもしれません。

そんな時に便利なスクリプトをご紹介します。

あるテーブルの特定のトリガーの無効化(disable) / 有効化(enable)

まずはあるテーブルのあるトリガーを無効化(disable) / 有効化(enable)するスクリプトから見てみましょう。

ALTER TABLE [テーブル名] DISABLE TRIGGER [トリガー名];

ALTER TABLE [テーブル名] ENABLE TRIGGER [トリガー名];

または

DISABLE TRIGGER [トリガー名] ON [テーブル名];

ENABLE TRIGGER [トリガー名] ON [テーブル名];

あるテーブルの全てのトリガーの無効化(disable) / 有効化(enable)

次にあるのテーブルの全てのトリガーを無効化(disable) / 有効化(enable)するスクリプトです。

ALTER TABLE [テーブル名] DISABLE TRIGGER ALL;

ALTER TABLE [テーブル名] ENABLE TRIGGER ALL;

先程と同じ ALTER TABLE を使ってトリガー名の変わりに ALL というキーワードを指定します。

データベースの全トリガーの無効化(disable) / 有効化(enable)

最後にデータベースの全トリガーを無効化(disable) / 有効化(enable)する方法です。

現在一番簡単なのは、ドキュメントされていない sp_MSforeachtable を使って以下のようにスクリプトを実行する方法です。

sp_MSforeachtable "ALTER TABLE ? DISABLE TRIGGER ALL";

sp_MSforeachtable "ALTER TABLE ? ENABLE TRIGGER ALL";

ただ、sp_MSforeachtable はドキュメントされていないストアードプロシジャーなのでいつどうなるかわかりません。

手動で一時的に全トリガー(trigger) を無効化(disable) / 有効化(enable)する時にのみ使うのが良いと思います。

© 2010-2024 SQL Server 入門