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' 处或附近的语法错误”的主要内容,如果未能解决你的问题,请参考以下文章