嗨,我尝试插入表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中的标准,也可以不带引号
如果用双引号定义列,那么在引用该列时通常需要使用它们:
insert into tester3 ("UN0", "UN1") values ( 1, 'jishnu1');
我建议您从CREATE TABLE语句中的列名中删除双引号。
CREATE TABLE
如果名称全为小写,则不需要双引号。