如果Postgres表中的列名为name year
,应如何INSERT
查询以设置该列的值?
例如:INSERT INTO table (id, name, year) VALUES ( ... );
在年份词附近给出错误。
如果Postgres表中的列名为name year
,应如何INSERT
查询以设置该列的值?
例如:INSERT INTO table (id, name, year) VALUES ( ... );
在年份词附近给出错误。
Answers:
只需year
用双引号引起来,就可以避免将其解释为关键字:
INSERT INTO table (id, name, "year") VALUES ( ... );
从文档中:
还有第二种标识符:定界标识符或带引号的标识符。它是通过将任意字符序列括在双引号(“)中形成的。定界的标识符始终是标识符,而不是关键字。因此,” select“可用于引用名为” select“的列或表,而未加引号的选择将作为关键字,因此在需要表或列名称的地方使用时会引发解析错误。
update "user" set "password" = 'value...';
效果很好...
如果您未在任何字段/列中提供引号,则默认情况下Postgres将小写。当涉及到列名时,Postgres将跳过checking关键字。
就您而言,我不认为在时必须添加引号columns
。但是,如果您使用keywords
(由Postgres注册)作为,或等的名称Table
,则必须使用双引号,或者可以使用点串联来指定架构名称。Schema
Function
Trigger
假设,order是Postgres注册的关键字。在某些情况下,您必须必须使用此关键字作为表名。
那时,Postgres将允许您使用创建表keywords
。那就是Postgres的美丽。
要访问订单表,您必须使用双引号或者可以在表名之前使用架构名称。
例如
1。
select * from schema_name.order;
2。
select * from "order";
同样,您可以使用这种类型的组合。希望这会帮助你。
MyTable
,myTable
并且mytable
是一样的。使用引号不会完成此折叠。因此"MyTable"
不再与相同mytable
。