SkillStack
テクノロジ系27 / 80問

応用情報技術者試験 令和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に質問できる
SkillStackで無料で始める