DML トリガーの削除または無効化

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server の DML トリガーを削除または無効にする方法について説明します。

このトピックの内容

始める前に

推奨事項

  • トリガーを削除すると、現在のデータベースから削除されます。 トリガーの基になっているテーブルとデータは影響を受けません。 テーブルを削除すると、そのテーブルについて設定されたトリガーはすべて自動的に削除されます。

  • トリガーは、作成時に既定で有効になります。

  • トリガーを無効にしてもトリガーは削除されず、 オブジェクトとして現在のデータベースに残りますが、 ただし、トリガーを起動するようにプログラミングされている INSERT、UPDATE、DELETE のいずれかのステートメントを実行してもトリガーは起動されません。 無効になったトリガーは、再度有効にできます。 トリガーを有効化しても、トリガーが再作成されるわけではありません。 トリガーは、最初に作成したときと同じ動作で起動されます。

セキュリティ

アクセス許可

DML トリガーを削除するには、そのトリガーが定義されているテーブルまたはビューに対する ALTER 権限が必要です。

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

SQL Server Management Studio を使用する

DML トリガーを削除するには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。

  2. 目的のデータベースを展開し、 [テーブル]を展開します。次に、削除するトリガーが格納されているテーブルを展開します。

  3. [トリガー]を展開し、削除するトリガーを右クリックして、 [削除]をクリックします。

  4. [オブジェクトの削除] ダイアログ ボックスで、削除対象のトリガーを確認し、 [OK]をクリックします。

DML トリガーを有効または無効にするには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。

  2. 目的のデータベースを展開し、 [テーブル]を展開します。次に、無効にするトリガーが格納されているテーブルを展開します。

  3. [トリガー]を展開し、無効にするトリガーを右クリックして、 [無効化]をクリックします。

  4. トリガーを有効にするには、 [有効化]をクリックします。

Transact-SQL の使用

DML トリガーを削除するには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーし、クエリ ウィンドウに貼り付けます。 トリガーを作成するには、 CREATE TRIGGER Sales.bonus_reminder ステートメントを実行します。 トリガーを削除するには、 DROP TRIGGER ステートメントを実行します。

--Create the trigger.  
USE AdventureWorks2022;  
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 AdventureWorks2022;  
GO  
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL  
   DROP TRIGGER Sales.bonus_reminder;  
GO  
  

DML トリガーを有効または無効にするには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーし、クエリ ウィンドウに貼り付けます。 トリガーを作成するには、 CREATE TRIGGER Sales.bonus_reminder ステートメントを実行します。 トリガーを無効または有効にするには、それぞれ、 DISABLE TRIGGER ステートメントおよび ENABLE TRIGGER ステートメントを実行します。

--Create the trigger.  
USE AdventureWorks2022;  
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 AdventureWorks2022;  
GO  
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  
  
--Enable the trigger.  
USE AdventureWorks2022;  
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)