過去問解きまくり研究所 ホーム

平成22年度 春期 午前Ⅱ 問3

データ操作

UNIQUE制約に関する問題

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

R

ABCD
AA01BB01CC01DD01
AA01BB02CC02NULL
AA02BB01NULLDD03
AA02BB03NULLNULL
答えと解説を見る

✓ これが正解エUPDATE R SET A = 'AA02' WHERE A = 'AA01'

解説

A を AA02 に変えると(AA02,BB01)が 2 行になり重複します。

UNIQUE 制約は、指定した列の値の組合せが表の中で重複しないことを求める制約です。この表では、A と B の 2 列の組合せが一意でなければなりません。UPDATE R SET A = 'AA02' WHERE A = 'AA01' を実行すると、1 行目の(AA01,BB01)は(AA02,BB01)に、2 行目の(AA01,BB02)は(AA02,BB02)に変わります。ところが表にはもともと 3 行目の(AA02,BB01)があるので、同じ組合せが 2 行になり、制約に違反します。UPDATE の問は、書き換えた後の行を一つずつ作ってから、既存の行と組合せが重ならないかを確かめると確実です。

ほかの選択肢はなぜ違うのか

出典:平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)