shy*_*cha 122 sql postgresql
如果Postgres表中的列具有名称year,那么应该如何INSERT查询以设置该列的值?
例如:INSERT INTO table (id, name, year) VALUES ( ... );在年份字附近给出错误.
NPE*_*NPE 190
只需year用双引号括起来就可以将其解释为关键字:
INSERT INTO table (id, name, "year") VALUES ( ... );
Run Code Online (Sandbox Code Playgroud)
从文档:
存在第二种标识符:分隔标识符或带引号的标识符.它是通过用双引号(")括起任意字符序列而形成的.分隔标识符始终是标识符,绝不是关键字.因此,"select"可用于引用名为"select"的列或表,而不带引号的选择将被视为关键字,因此在预期使用表或列名称时会引发解析错误.
如果您未在任何字段/列中提供引号,则 Postgres 默认情况下会将其转为小写。当涉及到列名时,Postgres 将跳过检查关键字。
就您而言,我认为在columns. 但是,如果您使用(由 Postgres 注册)作为 、等的keywords名称,则必须使用双引号,或者可以使用点连接指定模式名称。TableSchemaFunctionTrigger
假设order是Postgres注册的关键字。而且在某些场景下,你必须要用这个关键字作为表名。
那时,Postgres 将允许您使用keywords. 这就是 Postgres 的美妙之处。
要访问订单表,您必须使用双引号,或者可以在表名称之前使用架构名称。
例如
1.
select * from schema_name.order;
Run Code Online (Sandbox Code Playgroud)
2.
select * from "order";
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用这种类型的组合。希望对你有帮助。