高度情報処理技術者試験・情報処理安全確保支援士試験 令和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に質問できる