SQL Server

SQLServerでトリガーを扱ってみる

投稿日:2014/01/14 更新日:

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でエラーが発生すると
トランザクションの状況によってはロールバックが発生し、
メインテーブルの変更も無効になったりするので
注意が必要です。




-SQL Server
-, , ,

Copyright© ソフトウェア開発日記 , 2017 AllRights Reserved.