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

公開日: : 最終更新日:2016/07/19 SQL Server , , ,

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

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • 13 follow us in feedly

関連記事

SQLServer

SQLServerで「WITH ROLLUP」を使って小計、総合計を出力する

「WITH ROLLUP」を使って小計、総合計を出力 SQLServerでは「WITH ROLLU

記事を読む

SQLServerのSQL_VARIANT_PROPERTYを使ってカラムの基本データ型を取得する

このページはSQL_VARIANT_PROPERTYを使ってカラムの基本データ型を取得すると重複して

記事を読む

SQLServer

指定した値と同じ場合はNULLを返すNULLIF関数

使いどころがいまいち不明な「NULLIF()」 SQLServerには使いどころがいまいち不明な関

記事を読む

SQLServerでsp_renameを使ってテーブルの列名を変更する

SQLServerで列名を変更するには sp_renameを使って列名を変更 SQLServ

記事を読む

sp_pkeys – SQL Serverでテーブルのプライマリキーを取得する

sp_pkeysを使ってSQL Serverでテーブルのプライマリキーを取得します。

記事を読む

sp_columns – SQL Serverでカラムの型を取得する

SQL Serverで定義されているテーブルのカラムの型を取得する SQL Serverで定義され

記事を読む

再帰SQLで最大再帰数の指定

再帰SQLを実行すると最大再帰数に達してエラー 先日作成した日付を管理しているテーブルから共通テー

記事を読む

SQLServerのバージョン番号を取得する方法

SQLServerのバージョン番号を取得する SQLServerのバージョン番号は「@@VERSI

記事を読む

SQLサーバ

DATETIMEデータ型のミリ秒丸め現象

DATETIMEデータ型のミリ秒には丸めがあります SQLServerのDATETIMEデータ

記事を読む

@@ROWCOUNTで処理した件数を取得する

@@ROWCOUNTは直前に処理した件数を取得するための関数 SQLServerでは実行したSQL

記事を読む

GROUP BYとHAVINGで最新日付データを取得する

GROUP BYとHAVINGで最新日付データを取得する 社員マスタ

SQL Server2008で導入された[date/time/datetime2/datetimeoffset]型

SQL Server2008では新しい日付/時刻データ型 date/

SQLServerで自動で連番を設定する

カラムに自動で連番を設定する 自動で連番を設定し、レコードを管理する

SQL Server-登録されているストアドプロシジャーの一覧を取得する

データベースに登録されているストアドプロシジャーの 一覧を取得します

SELECTした結果をランダムに並び変える

SQLでSELECTした結果をランダムに並び変えて表示する SQLS

→もっと見る



PAGE TOP ↑