DML トリガーの変更または名前の変更

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server で DML トリガーを修正または名前を変更する方法について説明します。

このトピックの内容

はじめに

制限事項と制約事項

  • トリガーの名前を変更する場合、トリガーは現在のデータベース内にある必要があり、新しい名前は 識別子に関するルールに従っている必要があります。

推奨事項

  • sp_rename ストアド プロシージャを使用してトリガーの名前を変更しないことをお勧めします。 オブジェクト名の一部または全部を変更すると、スクリプトおよびストアド プロシージャが壊れる可能性があります。 トリガーの名前を変更しても、 sys.sql_modules カタログ ビューの definition 列にある、対応するオブジェクトの名前は変更されません。 トリガーを削除してから再作成することをお勧めします。

  • DML トリガーで参照されるオブジェクトの名前を変更する際には、新しい名前を反映するようにトリガーを変更する必要があります。 したがって、オブジェクトの名前を変更する前に、まずオブジェクトの依存関係を表示して、オブジェクト名の変更により影響を受けるトリガーがあるかどうかを確認してください。

  • DML トリガーは、定義が暗号化されるように変更することもできます。

  • トリガーの依存関係を表示するには、SQL Server Management Studio または次の関数およびカタログ ビューを使用できます。

セキュリティ

アクセス許可

DML トリガーを変更するには、トリガーが定義されているテーブルやビューに対する ALTER 権限が必要です。

SQL Server Management Studio を使用する

DML トリガーを変更するには

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

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

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

  4. トリガーを変更し、 [実行]をクリックします。

DML トリガーの名前を変更するには

  1. 名前を変更するトリガーを削除 します。

  2. 新しい名前を指定して、トリガーを再作成します。

Transact-SQL の使用

ALTER TRIGGER を使用してトリガーを変更するには

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

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

  3. 次の例をコピーし、クエリに貼り付けます。 1 つ目の例を実行して、ユーザーが SalesPersonQuotaHistory テーブルのデータの追加や変更を行おうとしたときにユーザー定義のメッセージを出力する DML トリガーを作成します。 ALTER TRIGGER ステートメントを実行して、 INSERT アクティビティのときだけトリガーが発生するように変更します。 このトリガーは、テーブルの更新や行の挿入を行うユーザーに対して、 Compensation 部門にも変更を知らせる必要があることを連絡できるので有用です。

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  
  
USE AdventureWorks2022;  
GO  
ALTER TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
AFTER INSERT  
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  

DROP TRIGGER と ALTER TRIGGER を使用してトリガーの名前を変更するには

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

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

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。 この例では、 DROP TRIGGER ステートメントと ALTER TRIGGER ステートメントを使用して、 Sales.bonus_reminder トリガーの名前を Sales.bonus_reminder_2に変更します。

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_2  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  

参照

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER TRIGGER (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)