遅延制約とは?
遅延制約とは、制約の検査時点をSQL文ごと(IMMEDIATE)ではなくトランザクションのコミット時まで先送りする指定。
データベーススペシャリスト試験の過去問では1回出題されています。
ちえんせいやく
遅延制約の意味
制約の検査時点をSQL文ごと(IMMEDIATE)ではなくトランザクションのコミット時まで先送りする指定。
遅延制約の具体例
一意な2行の値を入れ替えるとき、途中で一時的に重複が生じても、制約をDEFERREDにしておけば最終状態が正しければ通る。
遅延制約は試験でどう引っ掛けられる?
遅延できるのはDEFERRABLE指定で定義された制約だけ。NOT DEFERRABLEの制約は文単位で必ず検査される。
遅延制約と関連する用語
遅延制約が出た過去問
表定義に基づいて作成された"システム担当者"表において、トランザクションAの複合文内のSQL文全てを正常終了させるためにaに入れる字句はどれか。ここで、実線の下…
正解:UK_担当者番号 DEFERRED
要点:値の入替えは制約をDEFERREDにして検査を先送りする
2件の担当者番号を入れ替える更新では、1件目を更新した時点で他方と値が重複してしまう。この表の一意性制約はDEFERRABLEで宣言されているので、SET CONSTRAINTSで検査タイミングをDEFERREDに切り替えれば、検査がコミット時まで先送りされる。2件目の更新が終わった時点では重複が解消しているため、両方のUPDATEが正常終了する。主キー側は宣言にDEFERRABLEが付いておらず、遅延指定の対象にできない。
出典:令和7年度 秋期 データベーススペシャリスト試験 am2 問8(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。