尝试创建没有双引号名称的表会导致语法错误,只引用它有效:
# 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中引用名字是一个坏主意,但是我无法绕过这个,出了什么问题?
答案 0 :(得分:2)
user
是许多RDBMS中的保留字,包括PostgreSQL,所以你应该用双引号"
来转义它或者选择另一个。
P.S。由于此标识符是表名,因此最好使用users
而不是user
。