Mysql FKs引用主键时如何将主键更改为唯一键

Mysql FKs引用主键时如何将主键更改为唯一键,mysql,sql,Mysql,Sql,我有一个包含以下两列的数据库: `MainTable` barcode (PK) name 然后,我有另一个FKs到它的表: `SubTable` barcode (FK) info 如何向MainTable字段添加自动递增主键,同时确保条形码的唯一性?从本质上讲,如何在不出现FK错误的情况下执行以下操作 alter table maintable drop primary key; alter table maintable add unique key (barcode); ALTER

我有一个包含以下两列的数据库:

`MainTable`
barcode (PK)
name
然后,我有另一个FKs到它的表:

`SubTable`
barcode (FK)
info
如何向MainTable字段添加自动递增主键,同时确保条形码的唯一性?从本质上讲,如何在不出现FK错误的情况下执行以下操作

alter table maintable drop primary key;
alter table maintable add unique key (barcode);
ALTER TABLE `maintable` ADD `id` INT UNSIGNED  NOT NULL  AUTO_INCREMENT  PRIMARY KEY;

这将添加新的主键,然后需要向子表添加一个新列,将新主键引用为FK,并将旧FK从子表中删除。

Wait。。。。你为什么要这么做?添加自动int并用它替换自然键有什么好处?听起来很奇怪。但从第一个角度来看,SQL似乎是正确的方法。只有一个部分缺失:更新旧数据,因此条目10000445无法获得1如果我理解正确,是否要向主表上的条形码列添加唯一约束?如果是这样的话,这里回答的问题是重复的:@theDarse no-条形码已经是一个PK。而且,仅仅是条形码可以更改这一事实就表明需要一个代理密钥。@David542-MySQL中没有任何内容。是的,我的错误应该是MySQL中的自动增量。抱歉
ALTER TABLE mainTable DROP CONSTRAINT Primary_key
ALTER TABLE maintable ADD CONSTRAINT constraint_name UNIQUE (barcode)
ALTER TABLE maintable ADD COLUMN Id INT PRIMARY KEY AUTO_INCREMENT