当想要初始化mysql自增ID时可以执行

alter table testTable drop id;
alter table testTable add id bigint primary key not null auto_increment first;
没有外键的表可以直接这样操作,不影响原有数据,添加后,ID会自动自增覆盖原有数据。

如果表 testTable 有外键关联,且主表(example_table)与次表(example_table_ext)用同一个字段做ID(example_table_id)。

则删除主键时mysql会报错: MySQL Cannot drop index needed in a foreign key constraint。

这时要按照如下步骤执行

删除次表关联外键->删除次表自增ID->添加次表自增ID->删除主表自增ID->添加主表自增ID->添加次表关联外键

删除和添加主表自增ID的步骤是必须的,否则添加次表关联外键时会报错。以下为代码:

ALTER TABLE example_table_ext DROP FOREIGN KEY fk_example_table_ext;

ALTER TABLE example_table_ext DROP example_table_id;

ALTER TABLE example_table_ext ADD example_table_id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT FIRST;

ALTER TABLE example_table DROP example_table_id;

ALTER TABLE example_table ADD example_table_id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT FIRST;

ALTER TABLE example_table_ext 
 ADD CONSTRAINT `fk_example_table_ext` FOREIGN KEY (`example_table_id`) REFERENCES `example_table` (`example_table_id`); 

发表回复

Thanks for your support to bet365fans!