ON DELETE CASCADE
出典: 令和元年度 秋期 応用情報技術者試験 午前 問27 (IPA)
図のような関係データベースの“注文”表と“注文明細”表がある。“注文”表の行を削除すると,対応する“注文明細”表の行が,自動的に削除されるようにしたい。SQL 文の ON DELETE 句に指定する語句はどれか。ここで,図中の実線の下線は主キーを,破線の下線は外部キーを表す。

- ア CASCADE
- イ INTERSECT
- ウ RESTRICT
- エ UNIQUE
正解と解説を見る
正解: ア
- ア: CASCADE を指定すると、参照先の “注文” の行を削除したときに、対応する “注文明細” の行も自動で削除されるので正しい答えです。
- イ: INTERSECT は、2 つの問合せ結果の共通部分を求める演算子で、ON DELETE 句には書けません。
- ウ: RESTRICT を指定すると、対応する “注文明細” の行があるときは “注文” の行を削除できなくなります。
- エ: UNIQUE は、列の値が重複しないようにする制約で、ON DELETE 句には書けません。
ポイント
- 外部キーを定義するときに、参照先の行が削除されたときの動作を ON DELETE で指定できます。
・CASCADE: 参照している行も 一緒に自動で削除 する
・RESTRICT: 参照している行があれば、削除を 拒否 する - “注文” を削除したら “注文明細” も自動で消したいので、CASCADE を指定します。