SQLServerでのInsert,Update,Deleteトリガーの使い方

SQLServerにはテーブルに対して「トリガー」を設定することができ、テーブルに挿入、更新、削除されるごとにそれらの処理を呼び出すことが可能です。

スポンサーリンク

INSERT、UPADTE、DELETEトリガーを扱ってみる

SQLServerにはテーブルに対して「トリガー」を設定することができ、テーブルに挿入、更新、削除されるごとにそれらの処理を呼び出すことが可能です。

テーブルの準備

今回はデータを挿入、更新、削除されるテーブルとそのトリガーでレコードが自動的に挿入されるテーブルを用意します。

INSERTトリガー

test_main_tableにデータが挿入されると呼び出されるトリガーを作成します。

このトリガーではtest_main_tableに挿入された内容と、トリガーの種別「1」をtest_sub_tableに設定します。

test_main_tableに挿入された行のデータは「inserted」という特殊なテーブルから取得できます。

UPDATEトリガー

test_main_tableのデータが更新されると呼び出されるトリガーを作成します。

このトリガーではtest_main_tableに更新された内容と、トリガーの種別「2」をtest_sub_tableに設定します。

test_main_tableで更新された行のデータは「inserted」という特殊なテーブルから取得できます。

DELETEトリガー

test_main_tableのデータが削除されると呼び出されるトリガーを作成します。

このトリガーではtest_main_tableで削除された内容と、トリガーの種別「3」をtest_sub_tableに設定します。

test_main_tableで削除された行のデータは「deleted」という特殊なテーブルから取得できます。

INSERT,UPDATE,DELETEトリガーの動作確認

test_main_tableにデータを挿入し、そのデータを更新後、削除します。

上記のSQLを実行後test_sub_tableの内容を検索します。

実行結果は

となり、データ挿入時、更新時、削除時にそれぞれのトリガーが動作していることが確認できます。
(trigger_kindがそれぞれのトリガーに対応しています。)

トリガーの注意事項

トリガーで実行したSQLでエラーが発生するとトランザクションの状況によってはロールバックが発生し、メインテーブルの変更も無効になったりするので注意が必要です。

タイトルとURLをコピーしました