Как изменить идентификатор в существующих таблицах MySQL с данными на автоинкремент с последнего наибольшего идентификатора? - PullRequest
1 голос
/ 27 октября 2010

Мне только что удалось перенести довольно большую базу данных с SQL Server на MySQL. Я не установил для первичных ключей автоматическое увеличение во время миграции, поскольку таблицы имеют отношения на основе идентификаторов в качестве первичных ключей, которые являются внешними ключами в другой таблице.

Теперь для добавления новых записей я хочу изменить столбцы «id» первичного ключа во всех таблицах на автоинкремент, начиная с последнего наибольшего числа в столбце id в каждой таблице.

Какой лучший способ сделать это, не потеряв отношения, которые у меня уже есть?

ОБНОВЛЕНИЕ: Попытка добавить автоинкремент выдает мне эту ошибку:

ERROR 1067: Invalid default value for 'id'

SQL Statement:

ALTER TABLE `skandium`.`brands` CHANGE COLUMN `id` `id` INT(11) NOT NULL DEFAULT '0' AUTO_INCREMENT

ERROR 1050: Table 'brands' already exists

SQL Statement:

CREATE TABLE `brands` (
  `id` int(11) NOT NULL DEFAULT '0',
  `brand` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

1 Ответ

1 голос
/ 27 октября 2010

Просто добавьте автоинкремент для нужных вам столбцов.Это не повлияет на существующие строки.Он начнется со следующего доступного значения.

Обратите внимание, что столбец с автоинкрементом означает только то, что если вы не назначите ему значение, он будет добавлен MySQL.Если вы хотите указать явные значения, вы можете сделать это без особых действий.Таким образом, вы могли бы установить автоматическое увеличение этих столбцов с самого начала.

Столбец с автоматическим увеличением не может иметь явного значения по умолчанию.

Проверено

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