2013-04-11 94 views
0
CREATE TABLE Existing_medical_condition (
    condition VARCHAR(50) NOT NULL, 
    date_of_diagnosis DATE, treatment TEXT, 
    pssn INT NOT NULL, 
    CONSTRAINT emc_key PRIMARY KEY(condition, pssn), 
    FOREIGN KEY(pssn) REFERENCES Patient(ssn) 
); 

给出错误:语法有什么问题?

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition VARCHAR(50) NOT NULL, date_of_diagnosis DATE, treatment TEXT, pssn INT' at line 1

+0

如果以下任何答案有帮助,请考虑接受他们作为答案。 – Kermit 2013-04-23 00:45:10

回答

7

条件是reserved word。您必须将其包含在反引号中:

CREATE TABLE Existing_medical_condition (
    `condition` VARCHAR(50) NOT NULL, 
    date_of_diagnosis DATE, 
    treatment TEXT, 
    pssn INT NOT NULL, 
    CONSTRAINT emc_key 
    PRIMARY KEY(condition, pssn), 
    FOREIGN KEY(pssn) REFERENCES Patient(ssn)); 
+1

只为处理名称投票。 – Jordan 2013-04-11 17:56:25

+1

我以为是[条件],但我会远离保留字。 – JBrooks 2013-04-11 17:57:50

+0

@JBrooks方括号用于MSSQL。 – Kermit 2013-04-11 17:58:11

0

尽量避免为列名保留关键字。如果你还想要,你可以在下面写。

CREATE TABLE Existing_medical_condition ([condition] VARCHAR(50) NOT NULL,  date_of_diagnosis DATE, treatment TEXT, 
pssn INT NOT NULL, CONSTRAINT emc_key PRIMARY KEY(condition, pssn), FOREIGN KEY(pssn)  REFERENCES Patient(ssn));