今回は、Silverの「開発/SQL - SQLコマンド」からの出題です。
ビューに対してトリガーを定義すれば、更新が可能になる。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2011年8月25日
ビューは、表から特定の条件を満たす行や列をSELECTするだけの単純なものから、複数の表を結合したり、集計したり、といった複雑なものまであります。
単純なビューであれば、UPDATEやINSERTがどのように動作すべきかを簡単に定義できますが、複雑なビューでは、データがどのように更新されるか想像するのも難しいです。
ビューの更新についてはRDBMSの種類によって実装が異なります。
古いバージョンのPostgreSQLでは、ビューに対してルールが定義されている場合のみ更新が可能でしたが、バージョン9.1では、INSTEAD OFトリガーを定義することでビューの更新が可能になりました。またバージョン9.3では、特定の条件を満たすテーブルでは表と同様な更新が可能になりました(更新可能ビュー)。
更新可能な条件を満たさず、かつトリガーもルールも定義されていないビューはUPDATE文により更新することはできません。
従って、正解はB、C、Dです。
更新可能ビュー、トリガー、ルールについては、それぞれマニュアルの以下のページを参照してください。
http://www.postgresql.jp/document/9.3/html/sql-createview.html#SQL-CREATEVIEW-UPDATABLE-VIEWS
http://www.postgresql.jp/document/9.3/html/sql-createtrigger.html
http://www.postgresql.jp/document/9.3/html/sql-createrule.html
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.