无法在日期字段上添加外键约束

时间:2013-12-01 15:32:11

标签: mysql sql

我有以下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 - 无法添加外键约束”。如果我删除第二个表创建中的最后一个约束一切正常。我所有其他外键约束的工作方式完全相同。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

不确定为何将mysql问题标记为db2。无论如何,MySQL documentation州:

  

MySQL要求外键和引用键上的索引,以便外键检查可以快速而不需要表扫描

所以在Geburtsdatum列中添加一个索引:

CREATE TABLE patient(
  Name varchar(255),
  Geburtsdatum date,
  INDEX (Geburtsdatum),
  CONSTRAINT pk_patient PRIMARY KEY (Name,Geburtsdatum)
);