このトピックでは、SQL Server Management Studio または Transact-SQL を使用して SQL Server 2014 の DML トリガーを変更または名前変更する方法について説明します。
このトピックについて
作業を開始する準備:
DML トリガーを変更または名前変更するには、次を使用します。
開始する前に
制限事項と制約条件
- トリガーの名前を変更する場合、トリガーは現在のデータベースに存在し、新しい名前は 識別子の規則に従う必要があります。
推奨事項
sp_rename ストアド プロシージャを使用してトリガーの名前を変更しないことをお勧めします。 オブジェクト名の一部または全部を変更すると、スクリプトおよびストアド プロシージャが壊れる可能性があります。 トリガーの名前を変更しても、 sys.sql_modules カタログ ビューの定義列の対応するオブジェクト名の名前は変更されません。 代わりに、トリガーを削除して再作成することをお勧めします。
DML トリガーによって参照されるオブジェクトの名前を変更する場合は、テキストに新しい名前が反映されるようにトリガーを変更する必要があります。 したがって、オブジェクトの名前を変更する前に、オブジェクトの依存関係を最初に表示して、提案された変更によってトリガーが影響を受けるかどうかを判断します。
DML トリガーは、その定義を暗号化するように変更することもできます。
トリガーの依存関係を表示するには、SQL Server Management Studio または次の関数ビューとカタログ ビューを使用できます。
安全
権限
DML トリガーを変更するには、トリガーが定義されているテーブルまたはビューに対する ALTER 権限が必要です。
SQL Server Management Studio の使用
DML トリガーを変更するには
オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。
目的のデータベースを展開し、[ テーブル] を展開し、変更するトリガーを含むテーブルを展開します。
[ トリガー] を展開し、変更するトリガーを右クリックし、[ 変更] をクリックします。
トリガーを変更し、[ 実行] をクリックします。
DML トリガーの名前を変更するには
名前を変更するトリガーを削除します。
新しい名前を指定して、トリガーを再作成します。
Transact-SQL の使用
ALTER TRIGGER を使用してトリガーを変更するには
データベース エンジンに接続します。
[標準] バーから、新しいクエリをクリックします。
次の例をコピーしてクエリに貼り付けます。 最初の例を実行して、ユーザーが
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
こちらもご覧ください
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
トリガーを変更 (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)