PostgreSQL 语法错误 create table without double quotes

Syntax error on PostgreSQL create table without double quotes

尝试在不对名称加双引号的情况下创建表会导致语法错误,只有引用它才有效:

# 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)

这是在 Ubuntu 16.10:

附带的 PosgreSQL 9.5.5 上
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 中引用名称是个坏主意,但我无法解决这个问题,怎么了?

user 是包括 PostgreSQL 在内的许多 RDBMS 中的保留字,因此您应该使用双引号 " 将其转义或选择另一个。

P.S。由于此标识符是一个 table 名称,因此使用 users 代替 user 可能是个好主意。