平成24年度秋期 問28 / 80

平成24年度 秋期 応用情報技術者試験 午前 問28

R表に,(A,B)の2列で一意にする制約(UNIQUE制約)が定義されているとき,R表に対するSQL文のうち,この制約に違反するものはどれか。ここで,R表には主キーの定義がなく,また,全ての列は値が決まっていない場合(NULL)もあるものとする。

R

A B C D
AA01 BB01 CC01 DD01
AA01 BB02 CC02 NULL
AA02 BB01 NULL DD03
AA02 BB03 NULL NULL

キーボード:1〜4 で解答 → 次の問題 ← 前の問題

正解と解説を見る

正解:エ

  • ア: DELETE文
    誤り。行を削除しても(A,B)の値が重複することはないため,制約違反にはなりません。

  • イ: INSERT文('AA01',NULL,…)
    誤り。BがNULLの行です。UNIQUE制約では,NULLは他の値と等しいとはみなされないため,重複とはならず制約違反になりません。

  • ウ: INSERT文(NULL,NULL,…)
    誤り。A,Bともに NULL なので,既存の行と重複するとはみなされず,制約違反になりません。

  • エ: UPDATE文
    正しい。AがAA01の2行のAをAA02に変更すると,(AA01,BB01)が(AA02,BB01)になり,既存の3行目(AA02,BB01)と重複します。したがってUNIQUE制約に違反します。


答え

エ: UPDATE R SET A = 'AA02' WHERE A = 'AA01'

出典:平成24年度 秋期 応用情報技術者試験 午前 問28

平成24年度秋期の他の問題