Postgres表列名称限制?

时间:2012-06-05 03:58:43

标签: postgresql create-table

我是在psql中做到的:

CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT, ip TEXT);

我得到了

ERROR:  syntax error at or near "user" LINE 1: ...BLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT,...

我做:

CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, userd TEXT, ip TEXT);

有效。
请注意userd而不是user。

表可以有哪些列名限制? (postgresql v9.1.3)

2 个答案:

答案 0 :(得分:59)

这是PostgreSQL中一个很好的保留词表:
http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html

最好避免将这些单词用作表名或列名 但是,另一种方法是将标识符用双引号括起来,例如:

CREATE TABLE IF NOT EXISTS apiss (
    skey TEXT, 
    time INTEGER, 
    "user" TEXT, 
    ip TEXT);

答案 1 :(得分:26)

在我公司,我不得不扫描整个数据库中的保留字。我在

的帮助下完成了任务
select * from pg_get_keywords()