2025年(令和7年) 秋期 データベーススペシャリスト 午前 問8

表定義に基づいて作成された“システム担当者”表において、トランザクションAの複合文内のSQL文全てを正常に終了させるためにaに入れる字句はどれか。 ここで、実線の下線は主キーを表す。

[表定義]
 CREATE TABLE システム担当者(
   システム番号 INTEGER,
   担当者番号 INTEGER NOT NULL,
   CONSTRAINT PK_システム番号 PRIMARY KEY(システム番号),
   CONSTRAINT UK_担当者番号 UNIQUE(担当者番号)
     DEFERRABLE INITIALLY IMMEDIATE
 )

システム担当者
システム番号 担当者番号
1234 111
6789 222

[トランザクションAの複合文内のSQL文]
 SET CONSTRAINTS   a  :
 UPDATE システム担当者 SET担当者番号 = 222 WHERE システム番号 = 1234:
 UPDATE システム担当者 SET担当者番号 = 111 WHERE システム番号 = 6789:
 COMMIT;

 ア  PK_システム番号 DEFERRED
 イ  PK_システム番号 IMMEDIATE
 ウ  UK_担当者番号 DEFERRED
 エ  UK_担当者番号 IMMEDIATE


答え ウ


解説
表定義の“CONSTRAINT”句は“CREATE TABLE”内の制約を作成するもので、システム番号を主キーに、担当者番号をユニークにする制約を指定しています。
複合文内の“SET CONSTRAINTS”実行中のトランザクションの制約検査のタイミングを設定する構文で、“IMMEDIATE”制約は1つの文の実行が終わるごとに検査され、“DEFERRED”制約はトランザクションがコミットされるまで検査されません。
したがって、トランザクションAの複合文内のSQL文全てを正常に終了させるためには、条件の厳しい「担当者番号がユニーク」の制約をコミットまで検査しないが適切なので
 UK_担当者番号 DEFERRED
(ウ)になります。


キーワード
・トランザクション処理

キーワードの解説
  • トランザクション処理
    トランザクション(transaction)とは関連する複数の処理を一連の一つの処理としてまとめたもののことです。
    金融機関の入出金処理などが代表例です。
    トランザクションとしてまとめられた処理は、処理の途中で中断することはなく、連続して処理するのが普通です。

もっと、「トランザクション処理」について調べてみよう。

戻る 一覧へ 次へ