0

嘿伙计们,我对整个 mysql 世界有点陌生,我目前遇到的问题是我无法弄清楚为什么这不起作用,这可能与 2 个主键有关吗?还是参考文献?提前致谢

CREATE TABLE IsSeenBy 
(  PatientCode int (11) NOT NULL,
   DoctorCode int (11) NOT NULL,
   Date VARCHAR (10) NOT NULL, 
   Time VARCHAR (5) NOT NULL,
   PRIMARY KEY (PatientCode), 
   PRIMARY KEY (DoctorCode),
   PatientCode REFERENCES (Patient),
   DoctorCode REFERENCES (Doctor)
;
4

2 回答 2

0

表中不能有 2 个 PK。如果你想要复合 PK 使用

PRIMARY KEY (PatientCode, DoctorCode), 

反而。

您也必须探索外键参考文档。

于 2013-01-14T12:01:38.473 回答
0

日期是一个保​​留字,所以如果你想命名一个列,你需要引用它。此外,我强烈建议对该列使用实际的日期类型,而不是 VARCHAR。(除非它需要像明星日期一样。)是的,你不能有两个主键。你需要一个或一个复合的。您的外键定义看起来也不正确

CREATE TABLE IsSeenBy 
(PatientCode int (11) NOT NULL,
DoctorCode int (11) NOT NULL,
`Date` DATETIME NOT NULL,
PRIMARY KEY (PatientCode, DoctorCode),
FOREIGN KEY (PatientCode)
REFERENCES Patient(PatientCode)
ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY (DoctorCode)
REFERENCES Doctor(`DoctorCode`)
ON UPDATE CASCADE ON DELETE RESTRICT

);
于 2013-01-14T12:17:22.733 回答