我有以下 SQL 语句:
CREATE TABLE patient(
Name varchar(255),
Geburtsdatum date,
CONSTRAINT pk_patient PRIMARY KEY (Name,Geburtsdatum)
);
CREATE TABLE fake(
Name varchar(255),
PName varchar(255),
PGeburtsdatum date,
CONSTRAINT pk_fake PRIMARY KEY (Name,PName,PGeburtsdatum),
CONSTRAINT fk_PName2 FOREIGN KEY (PName) REFERENCES patient(Name) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_PGeburtsdatum FOREIGN KEY (PGeburtsdatum) REFERENCES patient(Geburtsdatum) ON DELETE CASCADE ON UPDATE CASCADE
);
这给了我错误“#1215 - 无法添加外键约束”。如果我删除第二个表创建中的最后一个约束,一切正常。我所有其他外键约束的工作方式完全相同。我在这里缺少什么?
最佳答案
不确定为什么将 mysql
问题标记为 db2
。无论如何,MySQL documentation状态:
MySQL requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan
所以在Geburtsdatum
列中添加一个索引:
CREATE TABLE patient(
Name varchar(255),
Geburtsdatum date,
INDEX (Geburtsdatum),
CONSTRAINT pk_patient PRIMARY KEY (Name,Geburtsdatum)
);
关于mysql - 无法在日期字段上添加外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20313822/