如何更改现有MySQL表中的id,并将数据从最后一个最高ID自动增加?

时间:2010-10-26 20:57:23

标签: sql mysql database mysql-error-1050 mysql-error-1067

我刚刚设法将一个非常大的数据库从SQL Server迁移到MySQL。我没有在迁移过程中将主键设置为自动递增,因为这些表具有基于id作为主键的关系,这些键是另一个表中的外键。

现在要添加新记录,我想将所有表中的主键'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 个答案:

答案 0 :(得分:1)

只需在所需列上添加自动增量即可。它不会影响现有行。它将从下一个可用值开始。

请注意,自动增量列意味着如果您没有为其分配值,则MySQL将添加一个列。如果您想提供显式值,您可以这样做而不会发生任何特殊情况。因此,您可以将这些列设置为从一开始就自动递增。

具有自动增量的列不能具有显式默认值。

测试