【とりがー】
トリガー(データベース) とは?
最終更新:
💡 データの操作をきっかけに、DB側の処理を動かす
データベースで特定の操作が起きたとき、あらかじめ定義した処理を自動的に実行する仕組み。操作の種類、実行する時点、行ごとか文ごとかなどを設定し、詳細はDB製品によって異なる。
📌 このページのポイント
- INSERT・UPDATE・DELETEなどの操作をきっかけに実行する
- BEFORE・AFTERなどで操作との前後関係を指定する
- 行ごと・SQL文ごとの違いなど、対応範囲は製品の仕様を確認する
- PostgreSQLでは元の操作と同じトランザクションで動く
データベースのトリガーって何?
例えば行の追加や更新をきっかけに、更新日時を設定したり、別のテーブルへ履歴を記録したりする仕組みだよ。DB側に実行する処理を定義する。ここからはPostgreSQLを例に説明するね。
処理はどう登録するの?
先にトリガー用の関数を作り、CREATE TRIGGERで対象や操作、実行時点などを指定するよ。どのDBでも同じ書き方や機能というわけではないので、製品ごとの仕様を確認するんだ。
BEFOREとAFTERは確定の前と後?
操作との前後関係であって、AFTERをコミット後と考えるのは違うよ。PostgreSQLではトリガーも元の操作と同じトランザクションで動き、いずれかがエラーになれば両方の効果がロールバックされるんだ。
10行更新したら10回動くの?
行トリガーなら対象の各行について動くよ。文トリガーなら対象のSQL文につき1回で、変更行が0件でも動く。条件を設定できる場合もあるので、何を1回と数えるかを決めて設計するんだ。
どんなことに気を付ければいい?
まとめ:ざっくりこれだけ覚えればOK!
「DBトリガー」って出てきたら「データベースの操作をきっかけに自動で動く処理」と思えばだいたいOK!
📖 おまけ:英語の意味
「Database Trigger」 = データベースの引き金
💬 triggerは「引き金」や「きっかけ」。ここでは、設定したDB操作をきっかけに処理が起動することを表しているよ。