図のような関係データベースの“注文”表と“注文明細”表がある。
“注文”表の行を削除すると,対応する“注文明細”表の行が,自動的に削除されるようにしたい。
SQL文のON DELETE句に指定する語句はどれか。
ここで,図中の実線の下線は主キーを,破線の下線は外部キーを表す。
正答1
解説
正解は1です。
図では、“注文”表は注文番号が主キー(実線の下線)、顧客番号が外部キー(破線の下線)です。
“注文明細”表は注文番号と明細番号が主キーで、注文番号は“注文”表を参照する外部キーにもなっています。
参照される側の行を削除したとき、参照する側の行も連動して削除させる指定を選びます。
【選択肢別解説】
1:○ ON DELETE CASCADEを指定すると、“注文”表の行を削除したとき、同じ注文番号をもつ“注文明細”表の行も自動的に削除されます。
参照整合性を保ったまま連鎖的に削除できます。
2:× INTERSECTは、2つの問合せ結果の共通部分を求める集合演算子です。
外部キー制約のON DELETE句に指定する語句ではありません。
3:× RESTRICTは、参照している行が存在する場合に、参照される側の行の削除を拒否する指定です。
自動的に削除するのではなく、削除そのものを禁止します。
4:× UNIQUEは、列の値が重複しないことを保証する一意性制約です。
削除時の動作を指定する語句ではありません。
【ポイント】
ON DELETE句には、CASCADE、RESTRICT、SET NULL、SET DEFAULT、NO ACTIONなどを指定できます。
SET NULLは、参照している外部キーの値を空値にする指定です。