メインコンテンツへ
データベースDB実践

データベーストリガの種類と動作に関する説明として、最も適切なものはどれか。

ア.BEFOREトリガはSQL文の実行前に起動し、データを変更前に検証・加工できる。AFTER トリガはSQL文の実行後に起動し、連鎖的な処理(ログ記録・別テーブル更新)に向いている。正解
イ.BEFOREトリガはINSERT専用で、UPDATE・DELETEにはAFTERトリガのみ使用できる。
ウ.INSTEAD OFトリガはビューに対して直接UPDATE・DELETEを実行させるために使うが、テーブルには使えない。
エ.トリガは一つのテーブルに一種類しか設定できず、BEFORE・AFTER・INSTEAD OFを同時に設定することは禁止されている。

解説

トリガは「SQL文に連動する自動発火装置」。タイミング(BEFORE/AFTER/INSTEAD OF)×イベント(INSERT/UPDATE/DELETE)の組み合わせで動作が決まる。料理で言えば、食材チェック(BEFORE)→調理(SQL)→盛り付け(AFTER)の順番。

なぜ ア が正解か

アが正解。BEFOREトリガはSQL実行前に起動するため、入力値の検証や自動補完(例:created_atの自動セット)に最適。AFTERトリガはSQL完了後に起動するため、監査ログ記録・別テーブルへの連鎖更新などに使われる。

なぜ イ は間違いか

BEFOREトリガはINSERT・UPDATE・DELETE全イベントで使用可能。特定のSQL文に限定されない。

なぜ ウ は間違いか

INSTEAD OFトリガはビューに対する操作の代替処理として広く使われるが、RDBMSによってはテーブルにも設定可能。「ビューに対してのみ」というのは誤り。

なぜ エ は間違いか

一つのテーブルに複数のトリガを設定できる。BEFORE INSERT・AFTER UPDATE・INSTEAD OF DELETEを同じテーブルに共存させることも可能。

出典: AI生成問題(学習用)