問27 ON DELETE CASCADE

応用情報​技術者試験 令和7年度 春期 午前、全80問のうちの問27。

出典:令和7年度 春期 応用情報技術者試験 午前 問27(SQL 文は原本の画像を文字に書き起こした。空欄の枠は「[ a ]」で書いた)

SQL 文に示す参照制約が存在する“商品”表と“受注”表とがある。“商品”表の行を削除したとき,削除した行の商品コードと同じ値の商品コードをもつ“受注”表の行を自動的に削除する SQL 文として,a に入れる字句はどれか。

〔SQL 文〕
CREATE TABLE 商品 (
商品コード CHAR(4) PRIMARY KEY ,
商品名 VARCHAR(64)
)
 
CREATE TABLE 受注 (
受注番号 INTEGER PRIMARY KEY ,
商品コード CHAR(4) ,
受注個数 INTEGER ,
納品日 CHAR(8) ,
FOREIGN KEY (商品コード) REFERENCES 商品(商品コード)
ON DELETE [ a ]
)
  1. アCASCADE
  2. イRESTRICT
  3. ウSET DEFAULT
  4. エSET NULL
答えと解説を開く

正解はアです。

FOREIGN KEY の ON DELETE には、参照先 (商品) の行が削除されたとき、参照元 (受注) の行をどう扱うかを書きます。CASCADE を指定すると、削除が連鎖して、同じ商品コードを持つ受注の行も自動的に削除されます。問題の求める動きはこれです。正解はアです。

ほかの選択肢が違う理由

  • イRESTRICT は、参照している受注の行が残っている間は、商品の行の削除そのものを拒否します。受注の行は消えません。
  • ウSET DEFAULT は、受注の行を消さずに、その商品コードを列の既定値に置き換えます。
  • エSET NULL は、受注の行を消さずに、その商品コードを NULL に置き換えます。

仕組み

参照制約は、参照元の外部キーの値が、参照先の主キーに必ず存在するように守るしくみです。参照先の行を消すと、この約束が破れるので、どう扱うかを ON DELETE で決めておきます。

CASCADE は便利ですが、1 行の削除で関連する行が大量に消えることがあります。消してよい関係かどうかを確かめてから使います。

この問に出る言葉