Могу ли я обновить все таблицы первичных ключей, используя auto_increment (mysql)? - PullRequest
0 голосов
/ 21 мая 2018

Я хочу изменить все первичные ключи из таблицы, которая имеет много строк (около 3 КБ), используя автоматическое увеличение, начиная с 25 (например), но только для строк, которые удовлетворяют одному определенному условию.Это возможно ?.Вот пример таблицы:

create table place( 
   code int auto_increment,
   type varchar(10) not null,
   name varchar(50) not null,
   fk_place int,
   constraint pk_place primary key (code),
   constraint fk_place_place foreign key (fk_place) references place(code)
 );

Я хочу обновить, например, все строки 'city', меняющие только первичный ключ, но начиная с 25

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте использовать переменную.Установите его на единицу меньше значения, с которого вы хотите начать, и используйте выражение, увеличивающее переменную для правой части SET из UPDATE.

SET @i = 24;
UPDATE place
       SET code = @i := @i + 1
       WHERE <your_condition>;

Вы должны быть осторожны, хотячто вы не производите дуплексы с UPDATE или с более поздними INSERT с.Возможно, используйте ALTER TABLE place AUTO_INCREMENT = <new next value>; для установки следующего значения, которое будет использоваться для следующего INSERT.

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