参照動作(CASCADE・RESTRICT・SET NULL)とは?さんしょうどうさかすけーどりすとりくとせっとぬる
参照動作(CASCADE・RESTRICT・SET NULL)とは、参照される側(親)の行が削除・更新されたときに、参照する側(子)の行をどう扱うかを外部キーに指定するもの。子も連鎖させるCASCADE、親の操作自体を拒むRESTRICT(NO ACTION)、子の外部キー列をNULLや既定値へ置き換えるSET NULL・SET DEFAULTがあり、業務上の意味から選ぶ。
最終更新:2026-10-06
この語が出る過去問を解く →背景
親の行を消したときに子の行が取り残されると、どこも指していない外部キーが残り、集計も再表示も破綻する。かといってアプリケーションごとに削除前の後始末を書いて回れば、経路が増えるほど書き漏らしが起きる。整合性を保つ責任をデータベース側の宣言に移し、しかも業務ごとに違う「消すのか、拒むのか、切り離すのか」を選べるようにしたのがこの指定である。
具体例
受注ヘッダと受注明細のように、親が消えれば子も意味を失う関係にはCASCADEが自然に合う。顧客と受注は、顧客を消しても受注履歴を残す必要があるためRESTRICTとし、実運用では論理削除フラグを併用する。部署と社員のように、所属が一時的に外れる状態を表せる場合はSET NULLが合う。
試験での引っ掛け
CASCADEは連鎖が何段にも波及するため、1行の削除のつもりが想定外の大量削除やロック待ちを招く点が問われる。またSET NULLは、子の外部キー列にNOT NULL制約が付いていると実行時エラーになるので、制約の組合せを確認しないと選べない。RESTRICTは操作を拒むのであって、子を残したまま親だけ消す指定ではない。
関連用語
出た過去問
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。