我好不容易才从SQL Server的一个相当大的数据库迁移到MySQL。我在迁移过程中没有设置主键自动递增,因为表基于ID作为主键这是在其它表的外键具有关系。

现在添加新记录我要改变的主键中的所有表“ID”列是自动增量,但在每个表中的id列的最后一个最高号开始。

什么是做到这一点不失关系,我已经有最好的方法是什么?

UPDATE:试图添加自动增量给我此错误:

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