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

StackOverflow https://stackoverflow.com/questions/4027954

Вопрос

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

Теперь для добавления новых записей я хочу изменить столбцы первичного ключа «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
Это было полезно?

Решение

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

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

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

Тестировано

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top