这个程序在mysql中的错误是什么?

时间:2011-07-02 12:51:16

标签: mysql

create table order
(
code int not null primary key,
client_code int,
suite_code int,
gallery_code int,
foreign key(client_code) references client(number),
foreign key(suite_code) references suite(number),
foreign key(gallery_code) references gallery(number)
);

抱怨'order'附近的SQL语法错误。

4 个答案:

答案 0 :(得分:2)

将表的名称从order更改为mysql未保留的内容,它将起作用。

答案 1 :(得分:0)

您使用SQL关键字order作为表名(order by用于排序结果集)。您可以将其更改为其他内容,也可以将表命名为orders

我实际上更喜欢后者,因为该表包含大量订单而不是单个订单,它可以保持您的意图清晰。

答案 2 :(得分:0)

您也可以使用

create table `order`

答案 3 :(得分:0)

单词order是一个MySQL关键字,因此,您的SQL语句中存在歧义。

您应该使用反引号来分隔用户定义的字段:

CREATE TABLE `order` (
   `code`         INT NOT NULL PRIMARY KEY,
   `client_code`  INT,
   `suite_code`   INT,
   `gallery_code` INT,
   FOREIGN KEY (`client_code`)  REFERENCES `client`  (`number`),
   FOREIGN KEY (`suite_code`)   REFERENCES `suite`   (`number`),
   FOREIGN KEY (`gallery_code`) REFERENCES `gallery` (`number`)
);

(我还大写了关键字,使你的查询模糊清晰。)

字段名称和关键字不再含糊不清。但是,仍然建议不要使用关键字作为字段名称,因为这只会让人类读者感到困惑和容易出错!