表定義に基づいて作成された"システム担当者"表において、トランザクションAの複合文内のSQL文全てを正常終了させるためにaに入れる字句はどれか。ここで、実線の下線は主キーを表す。 〔表定義〕 CREATE TABLE システム担当者 ( システム番号 INTEGER, 担当者番号 INTEGER NOT NULL, CONSTRAINT PK_システム番号 PRIMARY KEY(システム番号), CONSTRAINT UK_担当者番号 UNIQUE(担当者番号) DEFERRABLE INITIALLY IMMEDIATE ) 〔トランザクションAの複合文内のSQL文〕 SET CONSTRAINTS [ a ]; UPDATE システム担当者 SET 担当者番号 = 222 WHERE システム番号 = 1234; UPDATE システム担当者 SET 担当者番号 = 111 WHERE システム番号 = 6789; COMMIT;
値の入替えは制約をDEFERREDにして検査を先送りする
システム担当者表:
| システム番号 | 担当者番号 |
|---|---|
| 1234 | 111 |
| 6789 | 222 |
選択肢
- アPK_システム番号 DEFERRED
- イPK_システム番号 IMMEDIATE
- ウUK_担当者番号 DEFERRED
- エUK_担当者番号 IMMEDIATE
正解と解説
正解:ウ UK_担当者番号 DEFERRED
2件の担当者番号を入れ替える更新では、1件目を更新した時点で他方と値が重複してしまう。この表の一意性制約はDEFERRABLEで宣言されているので、SET CONSTRAINTSで検査タイミングをDEFERREDに切り替えれば、検査がコミット時まで先送りされる。2件目の更新が終わった時点では重複が解消しているため、両方のUPDATEが正常終了する。主キー側は宣言にDEFERRABLEが付いておらず、遅延指定の対象にできない。
選択肢ごとの解説
- ア主キー制約はDEFERRABLEと宣言されていないため、遅延に切り替えることはできない。
- イ主キー制約を即時にしても、重複が起きるのは一意性制約の側なので解決しない。
- ウ正しい。遅延可能な一意性制約をDEFERREDにすれば、検査がコミット時まで先送りされる。
- エ即時のままでは1件目の更新時点で重複が検出され、エラーになる。
同じ分野の他の問題
- 図のような関係データベースの"注文"表と"注文明細"表がある。"注文"表の行を削除すると、対応する"注文明細"表の行が、…2025年度 秋期 午前II 問11
- 商品情報に価格、サイズなどの管理項目を追加する場合でもスキーマ変更を不要とするために、“管理項目”表を次のSQL文で定義…2018年度 春期 午前II 問7
- PCへのメモリカードの取付け状態を管理するデータモデルを作成した。1台のPCは、スロット番号によって識別されるメモリカー…2017年度 春期 午前II 問11
- 関係演算において、商演算と同等な結果が得られる演算の組合せはどれか。2025年度 秋期 午前II 問10
- 関係R、Sに次の演算を行うとき、RとSが和両立である必要のないものはどれか。2024年度 秋期 午前II 問11
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。