SQLサーバーで一括更新を行うのに少し苦労しています。複合主キー(studentid、login、pass)を持つテーブルがあります。彼らはグループにいるので、彼らは共通のログインとパスワードを持っています。(ここでもすべて同じログインとパス)更新を実行し、ログインを設定して、フィールドclass group = xの新しい値にパスしますが、重複する主キー違反エラーが発生します。なぜですか?ありがとう
4789 次
2 に答える
1
変な主キーがあるとすれば、それがどのように侵害されるかは簡単にわかります。たとえば、生徒 1 がテーブルに 2 つの行を持っているとします。
studentid login pass group
1 bobama reallyborninkenia politician
1 bobama2 raisetaxes politician
そして、グループを更新するとします politician
:
update StudentTable
set login = 'bobama'
, pass = 'justpwndromney'
where [group] = 'politician'
(studentid, login, pass)
同じ組み合わせの行が 2 つあるため、主キー違反が発生します。
それが変な場合、それはあなたの主キーが変だからです。主キーはちょうど(studentid)
.
于 2012-12-23T19:20:17.657 に答える
0
明らかに衝突があります。すでにテーブルに存在する学生ID/ログイン/パスワードの組み合わせを作成しています。このクエリは、提案された変更と競合する既存の行がどこにあるかを示します。
select t.* from [your-table] t
join (select * from [your-table] where [class-group] = x) proposed-change
on proposed-change.[studentid] = [t.studentid]
where t.login = 'proposed-login' and t.password = 'proposed-password'
于 2012-12-23T19:40:03.283 に答える