参照動作(CASCADE・RESTRICT・SET NULL)とは?さんしょうどうさかすけーどりすとりくとせっとぬる
参照動作(CASCADE・RESTRICT・SET NULL)とは、親の行が削除・更新されたときに子の行をどう扱うかを、外部キー制約の一部としてあらかじめ宣言しておく指定。選べるのは、子も一緒に消す/更新するCASCADE、子が残っている限り操作を拒むRESTRICT・NO ACTION、子の外部キー列をNULLや既定値へ差し替えるSET NULL・SET DEFAULTの3系統である。
最終更新:2026-10-06
この語が出る過去問を解く →背景
参照整合性は「子が指す親が必ず存在する」という制約だが、親を消そうとした瞬間にこの制約は必ず破れる。破れ方の正解は業務によって違い、明細のように親と運命を共にするものもあれば、履歴のように親が消えても残さなければならないものもある。そのためDBMSは挙動を一律に決めず、業務規則を宣言として書かせる形をとった。アプリ側の手続きで整合を保つより、宣言のほうが書き漏れが出にくい。
具体例
部署と社員の関係なら、部署を廃止したときに配属未定を表せるSET NULLが合う。伝票ヘッダと明細のように子が単独では意味を持たない関係ではCASCADEを選ぶ。会員と予約履歴は、会員を消しても実績を残す必要があるためRESTRICTで削除を禁じ、退会は行の削除ではなく状態列の更新として扱う。
試験での引っ掛け
CASCADEは何段にも連鎖して波及するため、親1行の削除が想定外の大量削除と長いロック待ちを招く。どこまで消えるかを設計時に追い切れるかが採否の分かれ目になる。SET NULLは、子の外部キー列にNOT NULLが付いていると実行時エラーになるので、制約の組合せを併せて確認する必要がある。RESTRICTとNO ACTIONは整合性を検査する時点が違う点も問われる。
関連用語
出た過去問
出典:令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問11(IPA)解説で登場
図のような関係データベースの"注文"表と"注文明細"表がある。"注文"表の行を削除すると、対応する"注文明細"表の行が、自動的に削除されるようにしたい。参照制約…
正解:CASCADE
要点:親削除に子も連動させる削除規則はCASCADE
参照制約の削除規則で、親表の行が削除されたときに、それを参照している子表の行も連鎖して削除させる指定がCASCADEである。この設問では注文が親、注文明細が子にあたるので、注文の行を消すと対応する明細も自動的に消える。参照している行があれば削除を拒否する指定はRESTRICTで、これとは逆の動きになる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。