0

SQLサーバーで一括更新を行うのに少し苦労しています。複合主キー(studentid、login、pass)を持つテーブルがあります。彼らはグループにいるので、彼らは共通のログインとパスワードを持っています。(ここでもすべて同じログインとパス)更新を実行し、ログインを設定して、フィールドclass group = xの新しい値にパスしますが、重複する主キー違反エラーが発生します。なぜですか?ありがとう

4

2 に答える 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 に答える