SQLServerのトリガーを作ったので、テンプレートとしてあげときます。
target_table (トリガ設定テーブル)
カラム | 型 |
---|---|
col_1 | int identity |
col_2 | nvarchar(50) |
trgger_ins_data(トリガ実行結果登録テーブル)
カラム | 型 |
---|---|
ID | int identity |
Msg | nvarchar(50) |
トリガのテンプレートクエリ
CREATE TRIGGER [my_trigger] ON [target_table] AFTER INSERT,DELETE,UPDATE AS BEGIN --トリガ内で処理された行数を示すメッセージが結果セットの一部として返されないようにします。 SET NOCOUNT ON; -- 変数宣言例 declare @col_1_data as nvarchar(50); ------------------------------------------ -- トリガ内のみinsertedテーブルが利用可能となります。 -- 同じくdeletedテーブルも利用可能です。 -- UPDATE文の場合には、deletedテーブルに更新前のデータが格納され、 -- insertedテーブルに更新後のデータが格納されます -- 複数行が1度に更新された場合もトリガの起動は1回だけです。 -- その場合、insertedとdeletedに対象となった複数行が入ります。 ------------------------------------------ -- 変数に値をセットするには([col_1]は元テーブルの列名) select @col_1_data = [col_1] from inserted --Insertするには --※「trgger_ins_data」はダミーテーブル insert into trgger_ins_data( Msg )values( @col_1_data ); -- 下記IFでの対象列更新時のみ動作する処理 IF UPDATE([col_1]) AND UPDATE([col_2]) BEGIN --処理 END END