DML トリガーの削除または無効化
このトピックでは、SQL Server Management Studioまたは Transact-SQL を使用して、SQL Server 2014 で DML トリガーを削除または無効にする方法について説明します。
このトピックの内容
作業を開始する準備:
DML トリガーを削除または無効にするために使用するもの:
はじめに
推奨事項
トリガーを削除すると、現在のデータベースから削除されます。 トリガーの基になっているテーブルとデータは影響を受けません。 テーブルを削除すると、そのテーブルについて設定されたトリガーはすべて自動的に削除されます。
トリガーは、作成時に既定で有効になります。
トリガーを無効にしてもトリガーは削除されず、 オブジェクトとして現在のデータベースに残りますが、 ただし、トリガーを起動するようにプログラミングされている INSERT、UPDATE、DELETE のいずれかのステートメントを実行してもトリガーは起動されません。 無効になったトリガーは、再度有効にできます。 トリガーを有効化しても、トリガーが再作成されるわけではありません。 トリガーは、最初に作成したときと同じ動作で起動されます。
セキュリティ
アクセス許可
DML トリガーを削除するには、そのトリガーが定義されているテーブルまたはビューに対する ALTER 権限が必要です。
DML トリガーを無効または有効にするには、少なくともトリガーが作成されたテーブルまたはビューに対する ALTER 権限が必要です。
SQL Server Management Studio を使用する
DML トリガーを削除するには
オブジェクト エクスプローラーで、 データベース エンジン のインスタンスに接続し、そのインスタンスを展開します。
目的のデータベースを展開し、 [テーブル]を展開します。次に、削除するトリガーが格納されているテーブルを展開します。
[トリガー]を展開し、削除するトリガーを右クリックして、 [削除]をクリックします。
[オブジェクトの削除] ダイアログ ボックスで、削除対象のトリガーを確認し、 [OK]をクリックします。
DML トリガーを有効または無効にするには
オブジェクト エクスプローラーで、 データベース エンジン のインスタンスに接続し、そのインスタンスを展開します。
目的のデータベースを展開し、 [テーブル]を展開します。次に、無効にするトリガーが格納されているテーブルを展開します。
[トリガー]を展開し、無効にするトリガーを右クリックして、 [無効化]をクリックします。
トリガーを有効にするには、 [有効化]をクリックします。
Transact-SQL の使用
DML トリガーを削除するには
データベース エンジンに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーし、クエリ ウィンドウに貼り付けます。 トリガーを作成するには、 CREATE TRIGGER
Sales.bonus_reminder
ステートメントを実行します。 トリガーを削除するには、 DROP TRIGGER ステートメントを実行します。
--Create the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
--Delete the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
DML トリガーを有効または無効にするには
データベース エンジンに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーし、クエリ ウィンドウに貼り付けます。 トリガーを作成するには、 CREATE TRIGGER
Sales.bonus_reminder
ステートメントを実行します。 トリガーを無効または有効にするには、それぞれ、 DISABLE TRIGGER ステートメントおよび ENABLE TRIGGER ステートメントを実行します。
--Create the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
--Disable the trigger.
USE AdventureWorks2012;
GO
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO
--Enable the trigger.
USE AdventureWorks2012;
GO
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO
関連項目
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
DML トリガーに関する情報の取得
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)