列名可以是 PostgreSQL 或任何数据库中的“组”

AKI*_*WEB 7 postgresql syntax postgresql-9.2 quoted-identifier

我正在设计一个项目,该项目指定表中的列名应该是什么,规范中的列名之一是“组”。

我尝试创建它,但它总是在单词 = 附近抛出语法错误"group"。我真的很好奇,因为 SQL 中的关键字是“group by”而不是 group,所以是什么原因,我无法重命名或创建带有名称的列"group".

我正在使用和得到的语法和错误:

ALTER TABLE test RENAME COLUMN sum TO group;
ERROR:  syntax error at or near "group"
LINE 1: ALTER TABLE test RENAME COLUMN sum TO group;
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 12

group 一个保留字(并且by是另一个保留字)-它不是保留字GROUP BY。因为它是一个保留字,所以不能直接用作标识符。

要使用保留字或带有“非法”字符(例如空格)的名称作为标识符,您需要引用标识符。

ALTER TABLE test RENAME COLUMN sum TO "group";
Run Code Online (Sandbox Code Playgroud)

请注意,使用带引号的标识符时,您需要始终引用它。它变得区分大小写。"group"是与 不同的列名"GROUP"

详情请参阅手册

一般来说,使用需要引用的名称是一个非常糟糕的主意。如果您可以想出一个不需要引用的不同名称,它将为您省去很多麻烦。