Как мне увеличить все сохраненные значения поля id - PullRequest
3 голосов
/ 18 октября 2011

У меня есть таблица с именем blocks с первичным ключом blockid. Данные начинаются с blockid, равного 0. Теперь проблема в том, что в другой таблице blockid's начинается с 1. Итак, мне нужно получить все blockid's в blocks для увеличения 1.
Как мне это сделать?
Есть ли удобная функция для этого или нам нужно написать одну? Или я должен пойти и вручную изменить все это (это не займет много времени, но есть более 100 строк, поэтому я бы предпочел, если бы мне не пришлось это делать).

Спасибо за все.

1 Ответ

9 голосов
/ 18 октября 2011

Предполагая, что blockid не является первичным ключом вашего OP, можно быстро и просто использовать два оператора обновления последовательно:

UPDATE blocks
SET blockid = blockid + 1001

UPDATE blocks
SET blockid = blockid - 1000

В первом UPDATE вы увеличиваете все blockids на 1001. 1000 - это произвольно большое число, которое позволит вам избежать коллизий с другими идентификаторами (при условии, что у вас есть ограничение уникальности).

Во втором выражении вы уменьшаете на 1000, оставляя все идентификаторы на единицу, при этом избегая столкновений.

Если число 1000 недостаточно большое, вы можете увеличить его и сделать его произвольно большим. Просто убедитесь, что совпадает с номером и математикой во втором обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...