DML トリガーの変更または名前の変更
このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server 2012 の DML トリガーを変更したりその名前を変更したりする方法について説明します。
このトピックの内容
作業を開始する準備:
制限事項と制約事項
推奨事項
セキュリティ
DML トリガーに変更を加えたり名前を変更するために使用するもの:
SQL Server Management Studio
Transact-SQL
作業を開始する準備
制限事項と制約事項
- トリガーの名前を変更する場合、トリガーは現在のデータベース内にある必要があり、新しい名前は識別子に関するルールに従っている必要があります。
推奨事項
sp_rename ストアド プロシージャを使用してトリガーの名前を変更しないことをお勧めします。 オブジェクト名の一部または全部を変更すると、スクリプトおよびストアド プロシージャが壊れる可能性があります。 トリガーの名前を変更しても、sys.sql_modules カタログ ビューの definition 列にある、対応するオブジェクトの名前は変更されません。 トリガーを削除してから再作成することをお勧めします。
DML トリガーで参照されるオブジェクトの名前を変更する際には、新しい名前を反映するようにトリガーを変更する必要があります。 したがって、オブジェクトの名前を変更する前に、まずオブジェクトの依存関係を表示して、オブジェクト名の変更により影響を受けるトリガーがあるかどうかを確認してください。
DML トリガーは、定義が暗号化されるように変更することもできます。
トリガーの依存関係を表示するには、SQL Server Management Studio または次の関数およびカタログ ビューを使用できます。
セキュリティ
権限
DML トリガーを変更するには、トリガーが定義されているテーブルやビューに対する ALTER 権限が必要です。
[Top]
SQL Server Management Studio の使用
DML トリガーを変更するには
オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。
目的のデータベースを展開し、[テーブル] を展開します。次に、変更するトリガーが格納されているテーブルを展開します。
[トリガー] を展開します。変更するトリガーを右クリックし、[変更] をクリックします。
トリガーを変更し、[実行] をクリックします。
DML トリガーの名前を変更するには
[Top]
Transact-SQL の使用
ALTER TRIGGER を使用してトリガーを変更するには
データベース エンジンに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーし、クエリに貼り付けます。 1 つ目の例を実行して、ユーザーが SalesPersonQuotaHistory テーブルのデータの追加や変更を行おうとしたときにユーザー定義のメッセージを出力する DML トリガーを作成します。 ALTER TRIGGER ステートメントを実行して、INSERT アクティビティのときだけトリガーが発生するように変更します。 このトリガーは、テーブルの更新や行の挿入を行うユーザーに対して、Compensation 部門にも変更を知らせる必要があることを連絡できるので有用です。
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
USE AdventureWorks2012;
GO
ALTER TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
AFTER INSERT
AS RAISERROR ('Notify Compensation', 16, 10);
GO
DROP TRIGGER と ALTER TRIGGER を使用してトリガーの名前を変更するには
データベース エンジンに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 この例では、DROP TRIGGER ステートメントと ALTER TRIGGER ステートメントを使用して、Sales.bonus_reminder トリガーの名前を Sales.bonus_reminder_2 に変更します。
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_2
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
[Top]
関連項目
参照
DISABLE TRIGGER (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)