我有如下表:无法麻烦下探唯一约束
CREATE TABLE FlightInstance (
FLNO INT,
FDate VARCHAR(10),
PRIMARY KEY (FLNO, FDate)
) ENGINE = INNODB;
我增加了以下限制:
ALTER TABLE FlightInstance ADD CONSTRAINT FDATE_UNIQUE UNIQUE (FDate);
我为了加入这个约束能够使用FDate
作为参考键做到这一点(否则我会得到一个错误):
ALTER TABLE FlightLegInstance ADD FOREIGN KEY (FDate) REFERENCES FlightInstance(FDate);所以我填充我的表,并遇到了这两个条目到
FlightInstance
表中的问题:
INSERT INTO FlightInstance (FLNO, FDate) VALUES (1000 ,"10/5/2015"); ... INSERT INTO FlightInstance (FLNO, FDate) VALUES (1010 ,"10/5/2015");
所以,我认为我需要的,因为我有同样价值观的2 FDate
下降的唯一约束FDATE_UNIQUE
,但在发出此命令时,我得到这个错误:
Error on rename of './foo/#sql-699d_5b353' to './foo/FlightInstance' (errno:所以我做了一些研究,有的说我应该删除我的外键约束,因为我使用的是InnoDB,所以我成功地用下面的命令做了:
150)
alter table FlightInstance drop foreign key FlightInstance_ibfk_1;
但我仍然得到同样的错误如上。我使用的命令是:
alter table FlightInstance drop index FDATE_UNIQUE;
代替index
在命令我还用UNIQUE KEY
无济于事。
任何帮助,非常感谢。
是的,还有另外一个外键引用了这个。我知道它是什么桌子。但是,我如何处理这些信息呢?我仍然希望它成为'FlightLegInstance'(在本文中使用)和另一个表中的参考键。有没有办法使用'FDate'作为参考而不强加唯一约束?对不起,我只是坚持如何解决这个问题。 – Kenshin
是的,你可以这样做,因为索引不必是唯一的。因此,首先删除所有外键,然后删除唯一索引,然后在fdate上添加一个非unuque索引,然后再添加外键。 – Shadow