2013-01-14 41 views
0

嘿傢伙我對mysql的整個世界都很陌生,目前我遇到的問題是我無法理解爲什麼這不起作用可能與2個主鍵?或者它是參考?在此先感謝Err 1064引用第8行mysql

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) 
; 
+1

看起來像你缺少一個右括號「)」 – mcalex

回答

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 

); 
+0

非常感謝您的幫助,非常感謝。日期和時間部分看起來比我想要的好很多,不知道你可以有一個下拉框:D – user1977206

+0

如果你仍然有問題,確保它們都是InnoDB表(你可能需要添加'引擎= InnoDB'到創建語句的末尾,在關閉karen之後但在分號之前),並且引用表中的列被索引。 – Ilion

0

表中不能有2個PK。如果你想複合PK使用

PRIMARY KEY (PatientCode, DoctorCode), 

改爲。

你也必須探索外鍵參考文檔。

+0

感謝您的意見,我仍然得到同樣的錯誤,由於引用的部分,我認爲。 – user1977206