PostgreSQL 中的“'order' 处或附近的语法错误”

Posted

技术标签:

【中文标题】PostgreSQL 中的“\'order\' 处或附近的语法错误”【英文标题】:"syntax error at or near 'order'"" in PostgreSQLPostgreSQL 中的“'order' 处或附近的语法错误” 【发布时间】:2014-05-30 07:34:41 【问题描述】:

我正在尝试将名为 order 的列添加到我的表中。我意识到 order 是 SQL 中的保留字。那么,我该怎么做呢? 我的命令:

   alter table mytable add column order integer;

我也试过了:

   alter table mytable add column 'order' integer;

PostgreSQL 9.1.

【问题讨论】:

'order' 是字符串常量而不是列名。详见手册:postgresql.org/docs/current/static/… 从不使用 reserved words 作为标识符。在 Postgres 中只使用合法的小写名称,从此过上幸福的生活(无需双引号)。 我可以建议“display_order”或“ordinality”作为列名吗? 【参考方案1】:

您正在使用 order 这是一个保留关键字,您应该考虑将其重命名为类似 order 的内容。问题应该会消失。

【讨论】:

【参考方案2】:
ALTER TABLE table_name
ADD COLUMN "order" integer

【讨论】:

【参考方案3】:

我认为您不需要“列”。另外,“order”是 SQL 中的关键字,因此您应该为列使用不同的名称。遵循以下语法:

ALTER TABLE table_name ADD column_name datatype

来源:W3Schools

【讨论】:

【参考方案4】:

使用这个:

alter table mytable add column "order" integer;

但是,您可能需要考虑改用非保留名称,例如 sort_order 或类似的名称,以反映该列的用途(并且不是保留字)。

【讨论】:

谢谢。这个对我有用。 *** 要求我等待 9 分钟才能解决此问题。 呵呵,刚刚意识到用保留字命名列可能是个坏主意……也许我会重新考虑一下。 @user1344643 确实,使用保留关键字是一种不好的做法 - 只是不要这样做,你会在某些时候为自己省去很多麻烦 :)

以上是关于PostgreSQL 中的“'order' 处或附近的语法错误”的主要内容,如果未能解决你的问题,请参考以下文章

如何自动关闭 PostgreSQL 中的空闲连接?

PostgreSQL:块中的无效页眉

postgresql中的范围序列

PostgreSQL 中的循环

postgresql中的关系表

PostgreSQL 中的 Query 错误没有返回结果