今回は、Silverの「開発/SQL - トランザクションの概念(トランザクション分離レベル)」からの出題です。
トランザクション分離レベルは、SET TRANSACTIONコマンドで設定することができる。
トランザクション分離レベルは、BEGINとCOMMITの間の任意の箇所で指定できる。
トランザクション分離レベルとしてREAD UNCOMMITTEDを指定しても、READ COMMITTEDを指定したのと同じ動作になる。
最上位の分離レベルであるSERIALIZABLEはまだ実装されていない。
トランザクションの外側でトランザクション分離レベルを設定すると、警告が発生するが、エラーにはならない。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2015年10月13日
トランザクション分離レベルとして、PostgreSQLではSERIALIZABLE、REPEATABLE READ、READ COMMITTEDの3種類が利用できます。標準SQLではこれに加えてダーティーリードを許容するREAD UNCOMMITEDが定義されていますが、PostgreSQLではREAD UNCOMMITTEDを指定しても、READ COMMITTEDとして動作します(この動作自体は、標準SQLの仕様と矛盾するものではありません)。
トランザクション分離レベルは、トランザクション開始のBEGIN(あるいはSTART TRANSACTION)コマンドのオプションで指定するか、あるいはBEGINの直後にSET TRANSACTIONコマンドで指定します。トランザクション内でSELECTやUPDATEなどのSQL文を実行した後では、トランザクション分離レベルは指定できません。
トランザクションブロックの外部でトランザクション分離レベルを指定しても何の効果もありませんが、これ自体は警告を発するだけでエラーにはなりません。
誤っているものを選ぶ問題なので、正解はBとDです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.