“商品”表に対して、更新SQL文を実行するトランザクションが、デッドロックの発生によって異常終了した。
異常終了後の“商品”表はどれか。
ここで、“商品”表に対する他のトランザクションは、参照は行うが更新はしないものとする。
商品
商品コード |
商品名 |
販売単価 |
A010 |
AAA |
2,500 |
B020 |
BBB |
1,000 |
C030 |
CCC |
4,500 |
|
[更新SQL文]
DELETE FROM 商品 WHERE 商品コード = ‘BO2O’
ア |
商品コード |
商品名 |
販売単価 |
A010 |
AAA |
2,500 |
B020 |
NULL |
1,000 |
C030 |
CCC |
4,500 |
|
|
イ |
商品コード |
商品名 |
販売単価 |
A010 |
AAA |
2,500 |
B020 |
BBB |
1,000 |
C030 |
CCC |
4,500 |
|
ウ |
商品コード |
商品名 |
販売単価 |
A010 |
AAA |
2,500 |
C030 |
CCC |
4,500 |
|
|
エ |
商品コード |
商品名 |
販売単価 |
B020 |
BBB |
1,000 |
|
答え イ
【解説】
更新SQL文は商品コードが‘B020’のデータの組(行)を削除する命令であるが、デッドロックにより処理が正常に終了しなかったため、削除処理は有効にならず、異常終了後の“商品”表は、処理前の状態に戻るので
商品コード |
商品名 |
販売単価 |
A010 |
AAA |
2,500 |
B020 |
BBB |
1,000 |
C030 |
CCC |
4,500 |
(イ)になる。
【キーワード】
・デッドロック
【キーワードの解説】
- デッドロック(deadlock)
複数の処理(トランザクション)で、互いに相手が占有している資源(データ)を占有(ロック)しようとして、処理が停止することです。
処理がA、B、資源がX、Yのときに、処理Aが資源Xを占有し、処理Bが資源Yを占有している状態で、処理Aが資源Yの占有待ちになり、処理Bが資源Xの占有待ちになると、処理AとBはデッドロック状態になります。
もっと、「デッドロック」について調べてみよう。
戻る
一覧へ
次へ
|