トランザクション中の遅延制約指定(SET CONSTRAINTS)

SQL標準における制約検査タイミングの制御に関する問題です。2つの行の値を相互に入れ替える際の一意性制約(UNIQUE)の検査タイミングを制御します。 トランザクション内で担当者番号 111 と 222 を入れ替える際、最初のUPDATE実行時点で一時的に 222 が重複して一意性制約違反となります。制約 `UK_担当者番号` は `DEFERRABLE INITIALLY IMMEDIATE`(遅延可能・初期状態は即時検査)として定義されているため、`SET CONSTRAINTS UK_担当者番号 DEFERRED;` を実行して検査タイミングをコミット(COMMIT)時まで遅延させることで、トランザクション内の全SQLを正常終了させることができます。 `PK_システム番号` は主キー制約であり、問題の更新文(担当者番号の更新)で違反する制約ではありません。 `PK_システム番号` は関係せず、また `IMMEDIATE` では即時検査のままとなるためエラーを回避できません。 `IMMEDIATE` を指定すると制約検査がSQL文の実行直後に行われるため、1つ目のUPDATE実行時に一意性制約違反でエラーとなってしまいます。

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

sql
〔表定義〕
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;

出典令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問8
ア
PK_システム番号 DEFERRED
イ
PK_システム番号 IMMEDIATE
ウ
UK_担当者番号 DEFERRED
エ
UK_担当者番号 IMMEDIATE