PostgreSQL创建表上没有双引号

时间:2016-12-08 18:26:08

标签: sql postgresql syntax-error

尝试创建没有双引号名称的表会导致语法错误,只引用它有效:

# CREATE TABLE user (
email TEXT,
first_name TEXT,
last_name TEXT,
password TEXT,
plan TEXT,
gender gender
);
ERROR:  syntax error at or near "user"
LINE 1: CREATE TABLE user (
                     ^
# CREATE TABLE "user" (
email TEXT,
first_name TEXT,
last_name TEXT,
password TEXT,
plan TEXT,
gender gender
);
CREATE TABLE
# \dt
        List of relations
 Schema | Name | Type  |  Owner   
--------+------+-------+----------
 public | user | table | postgres
(1 row)

这是在PosgreSQL 9.5.5上附带Ubuntu 16.10:

PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005, 64-bit

我知道在PostgreSQL中引用名字是一个坏主意,但是我无法绕过这个,出了什么问题?

1 个答案:

答案 0 :(得分:2)

user是许多RDBMS中的保留字,包括PostgreSQL,所以你应该用双引号"来转义它或者选择另一个。

P.S。由于此标识符是表名,因此最好使用users而不是user