sqlでプライマリキーをまとめてUPDATEする時、クエリの書き方によってはプライマリキーが重複してエラーになってしまう。
ここでは、SQL ServerとMySQLについてのクエリを書く。
テーブルデータ(処理前)
id(PRIMARY KEY) | name |
---|---|
1 | name_1 |
2 | name_2 |
3 | name_3 |
4 | name_4 |
5 | name_5 |
テーブルデータ(処理後)
id(PRIMARY KEY) | name |
---|---|
2 | name_1 |
3 | name_2 |
4 | name_3 |
5 | name_4 |
6 | name_5 |
MySQLの場合は、ORDER BYを使用してidを降り順に設定する。
(5→6, 4→5, ・・・, 1→2の処理順)
設定しないとidが重複してエラーになる。
MySQL.sql
UPDATE tbSample SET id = id + 1
ORDER BY id DESC
SQLServerの場合は、そのまま書けばよい。
自動でやってくれるっぽい。
逆にORDER BYを書くとエラーになる。
SQLServer.sql
UPDATE tbSample SET id = id + 1