【发布时间】:2015-04-22 16:33:16
【问题描述】:
我有一个包含以下两列的数据库:
`MainTable`
barcode (PK)
name
然后我有另一个表,它是 FK 的:
`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;
【问题讨论】:
-
等等.... 为什么要这样做?添加 auto int 并用它替换自然键有什么好处?
-
听起来很奇怪。但是 SQL 看起来像是第一个视图的正确方法。仅缺少一个部分:更新旧数据,因此条目 10000445 未获得 #1
-
如果我对您的理解正确,您想在主表的条形码列中添加唯一约束吗?如果是这样,这是在这里回答的重复问题:stackoverflow.com/questions/469471/…
-
@theDarse no -- 条形码已经是一个PK。
-
条形码可以改变这一事实也表明需要代理键。