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

関連記事

SQL Server-テーブルのプライマリーキー(PK)を取得する

SQL ServerでSQLを使用してプライマリーキー(PK)を取得する必要があったので ちょっと

記事を読む

SQL Server のファイルサイズを圧縮する

データベースファイルのサイズを圧縮する データベースファイル(.mdf)またはトランザクションログ

記事を読む

SQLでCASE~WHENを使ってみる

SQLでCASE~WHENを使う SQLでCASE~WHENを使うとIF文で分岐して実行文を分ける

記事を読む

再帰SQLで歯抜けの日付データを取得する

再帰SQLを使って歯抜けの日付データを取得 処理が自動実行(バッチ処理)で実行された日付を管理して

記事を読む

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

カラムに自動で連番を設定する 自動で連番を設定し、レコードを管理する場合に 重宝するカラムの属性

記事を読む

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

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

記事を読む

CASE WHENを使ってSQLでIF文を使わずに条件を分岐する

SQLでIFを使わずに条件分岐する SQLでIFを書けばWHERE句の内容を変えて検索できますが、

記事を読む

SQLServer

SQLServerでクライアントのIPアドレスを取得する

SQLServerでクライアントのIPアドレスを取得する SQLを発行したクライアントのIPアドレ

記事を読む

SQLServer

GROUP BYとHAVINGを使ってデータの重複を探しだすSQL

GROUP BYとHAVINGで重複を探す SQLでGROUP BYとHAVINGを使ってデー

記事を読む

ALTER TABLEでカラムの属性を変更する

ALTER TABLEでカラムの属性を変更する すでに作成されているテーブルのカラムの属性を変更し

記事を読む

SQLで文字列を3分割する

SQLで文字列を3分割する どうしてもSQLServerで特定の

SQLServerでカンマ区切り (CSV) で文字列取得

SQLの取得結果をカンマ区切りで取得 Where句のINにSQL

SQLサーバ
連番中で 「歯抜け」の番号を見つけ出すSQL

テーブル内の連番の歯抜け番号を探す よくある処理でテーブルに設定され

ORDER BYでNULLのカラムを最後に表示

ORDER BYでNULLのカラムを最後に持ってくる SQLで何も考

DEFAULT制約付きのカラムの属性を変更する

DEFAULT制約付きのカラムの属性を変更する SQLServerで

→もっと見る



PAGE TOP ↑