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│
└──┴──┴──┴──┘
ア 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 = ‘AA01’ AND B = ‘BB02’ のレコード、つまりR表の2行目が削除される。
イ A = ‘AA01’ AND B = NULL のレコードが挿入される。
ウ A = NULL AND B = NULL のレコードが挿入される。
エ 正しい。A = ‘AA01’のレコード、つまりR表の1行目と、2行目の行のAの値が AA02 に更新される。これによって、R表の1行目と、3行目がともに、
A = ‘AA02’ B = ‘BB01’となり、UNIQUE制約に違反することになる。
問27 | 目次 | 問29 |