応用情報技術者試験 令和7年度 春期 午前 問27
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は「連鎖して処理する」という意味です。ON DELETE CASCADEを指定すると、参照される側である商品表の行を削除したとき、その商品コードを外部キーとして参照している受注表の行も自動的に削除されます。例えば、商品コードがA001の商品を削除すると、受注表にある商品コードA001の行が全て削除されます。したがって、目的の動作を指定する字句はCASCADEです。
イのRESTRICTは誤りです。RESTRICTは、削除対象の行を参照している受注行が存在する場合、商品行の削除を拒否する指定です。受注行は自動削除されません。
ウのSET DEFAULTは誤りです。これは、商品行を削除したとき、受注表の外部キーをあらかじめ設定された既定値に変更する指定です。既定値が参照制約を満たすように設計する必要があります。
エのSET NULLは誤りです。これは、商品行を削除したとき、対応する受注表の商品コードをNULLに変更する指定です。受注行自体は残ります。また、対象列にはNULLを格納できる必要があります。
【ポイント】 参照制約では、参照される側を親表、参照する側を子表と考えます。 CASCADEは子行も削除、RESTRICTは親行の削除を拒否、SET NULLとSET DEFAULTは子行の外部キー値を変更します。
出典:令和7年度 春期 応用情報技術者試験 午前 問27
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる