为什么CREATE TABLE中的一个标识符是双引号,而不是其他标识符?

时间:2012-10-22 03:08:54

标签: sql postgresql identifier ddl

我设置表

CREATE TABLE author (
  id serial NOT NULL,
  name character varying(255) NOT NULL,
  orcid character varying(128) NOT NULL,
  "position" integer NOT NULL,
  CONSTRAINT author_pkey PRIMARY KEY (id )
);

为什么"position"名称包含""
如何从""删除position

1 个答案:

答案 0 :(得分:1)

实际上,position

  

非保留(不能是功能或类型)

我指的是list of reserved words in the manual。你看到的很可能是pgAdmin的输出(你应该提到的)。 pgAdmin还根据任何SQL标准引用作为保留字的标识符 - 对于position都是如此。

因此,此语句在语法上是正确的:

SELECT position FROM author LIMIT 1;

当然,你可以总是双引号标识符,这也可行:

SELECT "position" FROM author LIMIT 1;

但是对于这样的陈述,你会需要双引号:

SELECT "where" FROM author LIMIT 1;
SELECT "CaMeL" FROM author LIMIT 1;
SELECT "a-b-c" FROM author LIMIT 1;