小编典典

错误:关系列不存在PostgreSQL,无法运行插入查询

sql

嗨,我尝试插入表tester3,当我使用语法时失败

insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');

insert into tester3 values ( 1, 'jishnu1');

工作正常。

mydb=# CREATE TABLE tester3
mydb-#    (
mydb(#     "UN0" integer,
mydb(#     "UN1" VARCHAR(40)
mydb(#    );
CREATE TABLE
mydb=# insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');
ERROR:  column "un0" of relation "tester3" does not exist
mydb=# \d tester3
           Table "public.tester3"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 UN0    | integer               |
 UN1    | character varying(40) |

我想我缺少了一些非常琐碎的东西,我尝试了其他一些列名,其中一些工作正常,而有些却无法正常工作。我很迷惑。PostgreSQL是否对列名有限制,因此插入查询的第一种语法适用于该列名?


编辑 :

签出Girdon Linoff的答案,正如FrankHeikens指出的那样,其他的列名在没有小写的情况下也没有引号。

小写列是PostgreSQL中的标准,也可以不带引号


阅读 181

收藏
2021-05-05

共1个答案

小编典典

如果用双引号定义列,那么在引用该列时通常需要使用它们:

insert into tester3 ("UN0", "UN1")
     values ( 1, 'jishnu1');

我建议您从CREATE TABLE语句中的列名中删除双引号。

如果名称全为小写,则不需要双引号。

2021-05-05