Mysql сбрасывает auto_increment не для новых идентификаторов, а для всех (также старых идентификаторов) - PullRequest
0 голосов
/ 10 августа 2011

Привет всем, есть ли какая-либо функция SQL для сброса всех идентификаторов auto_increment?

Я имею в виду, у меня такая ситуация (id = 1, id2 = 2, id3 = 3)

как только я удаляю идентификатор, мне бы хотелось, чтобы мне возвращали эту ситуацию (id2 = 1, id3 = 2) и т. Д.

Нужен ли мне скрипт для этого?

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Id - это Id, что означает, что он должен никогда не меняться ! По крайней мере, в хорошем дизайне базы данных. Идентификатор - это то, с чем вы рождаетесь и умираете.

0 голосов
/ 10 августа 2011

Вы можете сбросить AUTO_INCREMENT для всей таблицы:

ALTER TABLE table AUTO_INCREMENT=1;

Но вы не можете вернуться к заполнению значений в отдельных удаленных строках. Значения auto_increment должны быть уникальными, но они не обязательно будут последовательными, если произойдет удаление или будут вставлены новые строки с явным значением, установленным для столбца auto_increment.

Если вам нужно изменить их так, чтобы они снова были последовательными, это должно быть сделано в коде, возможно, с циклическим перебором всех строк и выполнением UPDATE операторов по отдельности.

...