当我将代码放入
时CREATE TABLE EVENT (
Event_ID SMALLINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
Event_Name VARCHAR(30) NOT NULL,
Event_Date DATE NOT NULL,
Event_Route VARCHAR(40) NOT NULL,
Event_Location VARCHAR(60) NULL,
Event_Cost DECIMAL(8,2) NOT NULL,
Staff_ID SMALLINT FOREIGN KEY NOT NULL,
Package_ID SMALLINT FOREIGN KEY NOT NULL,
CONSTRAINT Staff_ID FOREIGN KEY (Staff_ID) REFERENCES STAFF (Staff_ID),
CONSTRAINT Package_ID FOREIGN KEY (Package_ID) REFERENCES PACKAGE (Package_ID)
);
我收到以下错误消息
错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 在'FOREIGN KEY NOT NULL,Package_ID SMALLINT FOREIGN附近使用的语法 KEY NOT NULL,CONSTRAINT Staff'在第8行
答案 0 :(得分:1)
我认为错误非常清楚。您在Package_Id
和Staff_Id
(FOREIGN KEY
)的定义中间有关键字。这些不是必需的,它们由constraint
定义处理:
CREATE TABLE EVENT (
Event_ID SMALLINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
Event_Name VARCHAR(30) NOT NULL,
Event_Date DATE NOT NULL,
Event_Route VARCHAR(40) NOT NULL,
Event_Location VARCHAR(60) NULL,
Event_Cost DECIMAL(8,2) NOT NULL,
Staff_ID SMALLINT NOT NULL,
Package_ID SMALLINT NOT NULL,
CONSTRAINT Staff_ID FOREIGN KEY (Staff_ID) REFERENCES STAFF (Staff_ID),
CONSTRAINT Package_ID FOREIGN KEY (Package_ID) REFERENCES PACKAGE (Package_ID)
);
我会阻止你命名表Event
甚至Events
。该名称不是保留的,但它是MySQL中的关键字。