SkillStack
テクノロジ系10 / 30問

高度情報処理技術者試験・情報処理安全確保支援士試験 令和7年度 春期 午前I 問10

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は、参照先の行に対する削除や更新を、それを参照している行にも連鎖させる指定です。このSQLでは、「商品」表が参照される親表、「受注」表が外部キーで商品を参照する子表です。ON DELETE CASCADEを指定すると、「商品」表からある商品コードの行を削除した際、その商品コードをもつ「受注」表の行も自動的に削除されます。したがって、要求された動作を実現する字句はCASCADEです。

イのRESTRICTは誤りです。これは、削除対象の商品を参照する受注行が存在するとき、親表の商品行の削除を禁止する指定です。受注行を自動削除するものではありません。

ウのSET DEFAULTは誤りです。これは、親表の行が削除されたとき、子表の外部キーをあらかじめ定義されたデフォルト値に変更する指定です。受注行自体は残ります。また、利用には適切なデフォルト値の定義が必要です。

エのSET NULLは誤りです。これは、親表の行が削除されたとき、対応する子表の外部キーをNULLに変更する指定です。受注行そのものを削除する指定ではなく、外部キー列がNULLを許容する必要があります。

【ポイント】 ON DELETEは、参照される親表の行を削除したときの子表の扱いを指定します。 CASCADEは連鎖削除、RESTRICTは削除拒否、SET NULLとSET DEFAULTは外部キー値の変更です。 親表と子表のどちらの行が操作されるのかを明確にすると、参照動作を判断しやすくなります。

出典:令和7年度 春期 高度情報処理技術者試験・情報処理安全確保支援士試験 午前I 問10
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の30問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める