在列名中使用保留字

时间:2013-03-31 00:55:26

标签: mysql sql database

这是一些简单的代码,但我不知道为什么我不能将这个词用作表的实体

CREATE TABLE IF NOT EXISTS users(
key INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
);

我意识到我不能使用“密钥”,如果我使用密钥,mysql将要求我检查语法,但如果我使用“id”或任何其他表格将被创建。

任何人都知道如何将实体名称创建为密钥?不是很重要,因为我可以使用id而不是key但是因为我发现了这个错误,我想看看是否有办法让它工作。

2 个答案:

答案 0 :(得分:17)

如果您愿意,仍然可以使用key。只需用反引号包装它,

CREATE TABLE IF NOT EXISTS users
(
    `key` INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
);

但作为建议,请避免使用任何保留关键字以避免将来出现问题。 :)

答案 1 :(得分:4)

尾随下划线

简单解决方案:为每个名称添加尾随下划线

SQL规范SQL:2011明确承诺永远不会在任何关键字上使用尾随下划线,无论是现在还是将来。

示例:key_

请参阅my answer类似的问题, h2数据库列名是保留字