Сброс значения автоинкрементного столбца в скрипте mysql - PullRequest
1 голос
/ 13 мая 2010

У меня есть две таблицы mysql, одна из которых должна начинать идентификатор столбца с автоинкрементом с последнего значения последней вставленной строки в другой таблице (плюс 1).

В соответствии с руководством по mysql вы можете перезапустить значение столбца с автоинкрементом следующим образом:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

Однако это невозможно:

mysql> ALTER TABLE tb2 AUTO_INCREMENT = (SELECT MAX(id) FROM tbl1);

Мне нужно выполнить что-то подобное, потому что я заполняю таблицы скриптом. Есть ли другой способ добиться этого?

Ответы [ 3 ]

2 голосов
/ 13 мая 2010

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

0 голосов
/ 17 декабря 2013

А как насчет создания фиктивной записи и приращения?

-- insert dummy forcing id
INSERT INTO 'tb2' (ID, NAME, ...)
VALUES (SELECT MAX(id) FROM tb1, "dummy", ...);

-- automagically increment to last id + 1
ALTER TABLE `tb2' AUTO_INCREMENT = 1; -- only myISAM

-- delete dummy
DELETE FROM 'tb2' WHERE NAME="dummy";
0 голосов
/ 27 марта 2011

ЭТО ИСПОЛЬЗУЕТ ЭТОТ СКРИПТ

ALTER TABLE `people` AUTO_INCREMENT =1

, где люди - моя таблица, или вы можете сделать это через GUI (вкладка операции phpmyadmin с выбранной текущей таблицей)

...