参照制約と ON DELETE CASCADE
出典: 令和7年度 春期 応用情報技術者試験 午前 問27 (IPA)
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 ]
)- ア CASCADE
- イ RESTRICT
- ウ SET DEFAULT
- エ SET NULL
正解と解説を見る
正解: ア
- ア: 商品の行を削除したとき、同じ商品コードの受注の行も自動的に削除するのは CASCADE です。正しい答えです。
- イ: RESTRICT は、参照している受注があるとき商品の削除自体を拒否します。
- ウ: SET DEFAULT は、受注の商品コードを既定値にします。行は削除されません。
- エ: SET NULL は、受注の商品コードを NULL にします。行は削除されません。
ポイント
外部キーの宣言に付ける ON DELETE で、参照先の行を削除したときの動作を指定します。
- CASCADE: 参照元の行も 自動的に削除 する
- RESTRICT: 参照している行があれば削除を拒否する
- SET NULL: 参照元の外部キーを NULL にする
- SET DEFAULT: 参照元の外部キーを既定値にする