今回は、Silverの「S3 開発/SQL - SQLコマンド(トリガー)」からの出題です。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2019年12月26日
データベースでは、テーブルの更新と同時にトリガーを実行し、他の列や他のテーブルを同時に更新するように設定することができます。PostgreSQLでは、TRIGGER型の関数をCREATE FUNCTIONで定義し、それをCREATE TRIGGERでテーブルに紐付ける、という手順でトリガーを定義します。
トリガーにはいくつかの種類がありますが、主な分類として、テーブルのデータを更新する前に実行するBEFOREトリガーとデータの更新後に実行するAFTERトリガーがあります。また、SQL文の実行に対して1回だけ実行する文レベルのトリガーと、更新の対象となった各行について個別に実行される行レベルのトリガーがあり、BEFORE/AFTERと組み合わせると4通りのトリガーがあります(この他に、INSTEAD OFトリガーと呼ばれるものもあります)。
テーブルに対してUPDATE文が発行されたとき、まず、文レベルのBEFOREトリガーが実行され、その次に更新対象の各行について行レベルのBEFOREトリガーが実行されます。BEFOREトリガーの実行が終わったらUPDATE文の本体が実行されてテーブルが更新されます。その後は、BEFOREのときとは逆順で、まず更新対象となった各行について行レベルのAFTERトリガーが実行され、最後に文レベルのAFTERトリガーが実行されます。
したがって正解はBです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.