SQL - Попытка вставить новый столбец в существующую таблицу, где значения автоматически увеличиваются на 1, начиная с 50 - PullRequest
0 голосов
/ 27 августа 2018
 ALTER TABLE advance_d ADD testcolumn INTEGER NOT NULL AUTO_INCREMENT;

Это SQL-код, который я набрал.у меня есть таблица с именем advace_d.У этого есть столбец первичного ключа, названный "ad_id".когда я написал этот код ALTER TABLE advance_d ADD testcolumn INTEGER;, был создан новый столбец с нулевыми значениями.Я хочу знать, как создать столбец со значениями, начиная с заданного значения, автоматически увеличиваемого на 1.

, чтобы в моей таблице был 1 столбец первичного ключа для идентификатора и еще один столбец со значениями, начинающимися с 50, с шагом 1.

1 Ответ

0 голосов
/ 27 августа 2018

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

CREATE TABLE newTable (col1, col2, ..., colAuto INT NOT NULL AUTO_INCREMENT);
INSERT INTO newTable (col1, col2, ..., colAuto)
SELECT col1, col2, ..., NULL   -- NULL for colAuto
FROM yourTable
ORDER BY ad_id;

Это должно привести к новой таблице с теми же данными и столбцу colAuto, который начинается с 1, как указано в столбце ad_id в исходной таблице.После этого вы можете изменить colAuto, если вы не хотите, чтобы оно больше автоматически увеличивалось.Вы также можете удалить исходную таблицу, если она больше не служит какой-либо цели.

Редактировать:

Мы также можем сделать это, используя переменную сеанса с номером строки:

SET @rn := 0;
UPDATE yourTable
SET colAuto = (SELECT @rn := @rn + 1 )
ORDER BY ad_id;

Но на практике выполнение такого обновления в столбце без автоинкремента может не иметь большого смысла для бизнеса.Это связано с тем, что, как только вы добавите больше данных в свою таблицу, вам придется снова вручную обновлять, но на этот раз последовательность будет начинаться с некоторого числа, отличного от нуля.Действительно, столбец с автоинкрементом - это способ легко поддерживать последовательность в SQL.

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