問28 |
R表に、(A,B)の2列で一意にする制約(UNIQUE 制約)が定義されているとき、R表に対するSQL文のうち、この制約に違反するものはどれか。ここで、R表には主キーの定義がなく、また、全ての列は値が決まっていない場合(NULL)もあるものとする。
|
|
ア |
DELETE FROM R WHERE A=’AA01’ AND B = ’BB02’ |
イ |
INSERT INTO R(A,B,C,D) VALUES(’AA01’、NULL、’DD01’、’EE01’) |
ウ |
INSERT INTO R(A,B,C,D) VALUES(NULL、NULL、’AA01’、’BB02’) |
エ |
UPDATE R SET A =’AA02’ WHERE A =’AA01’ |
|
|
解説 |
A,B列をセットでUNIQUE制約を行うということは、表の中にA,Bがセットで同じものが存在することを認めないという意味です。なお、UNIQUE制約は主キー制約と異なり、NULL値が認められます。
選択肢ア:現在より行が減るため、制約に抵触することはありません。
選択肢イ:AA01とNULLのセットは、表にないため挿入可能です。
選択肢ウ:NULLとNULLのセットは、表にないため挿入可能です。
選択肢エ:UPDATE文を実行すると、1行目がAA02とBB01になるため、3行目と同じになり制約に抵触します。 |
|