【问题标题】:"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”作为列名吗?

标签: sql postgresql quoted-identifier


【解决方案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 或类似的名称,以反映该列的用途(并且不是保留字)。

        【讨论】:

        • 谢谢。这个对我有用。 StackOverflow 要求我等待 9 分钟才能解决此问题。
        • 呵呵,刚刚意识到用保留字命名列可能是个坏主意……也许我会重新考虑一下。
        • @user1344643 确实,使用保留关键字是一种不好的做法 - 只是不要这样做,你会在某些时候为自己省去很多麻烦 :)
        猜你喜欢
        • 2013-09-10
        • 1970-01-01
        • 2016-11-22
        • 2016-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        相关资源
        最近更新 更多