Oracle の制約には「即時モード(IMMEDIATE)」と「遅延モード(DEFERRABLE)」の2種類の評価タイミングがあります。通常の制約はデフォルトで「即時モード(NOT DEFERRABLE)」で、各 DML 操作ごとに即座にチェックされます。DEFERRABLE 制約は、コミット時まで制約チェックを遅らせることができ、親子関係のある複数テーブルへのデータ挿入時など、一時的に整合性が崩れてもコミット前に整合した状態になればよい場合に利用します。また、制約を一時的に無効化(DISABLE CONSTRAINT)して大量データのロードを高速化し、ロード後に有効化(ENABLE CONSTRAINT)する運用もよく行われます。外部キー制約の「ON DELETE CASCADE」オプションを設定すると、親レコードを削除した際に子レコードも自動的に削除されます。
試験でのポイント