28

嗨,我正在尝试插入表 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回答,正如Frank Heikens指出的其他不带引号的列名是小写的。

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

4

3 回答 3

42

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

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

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

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

于 2015-06-26T11:39:21.360 回答
9

尝试使用双引号对您的列名进行此操作

insert into tester3 ("UN0", "UN1") values ( 1, 'jishnu1');
于 2015-06-26T11:40:15.683 回答
0

我有关于 Qgis + POSTGRES DATA 数据库的故事我尝试使用 Navicate UPDATE "MangLuoi"."A_Lam_D310" SET "MangLuoi"."A_Lam_D310"."Nguon"='Lâm' 和 ERRO 的代码更新我的表:SQL] UPDATE "MangLuoi"."A_Lam_D310" SET "MangLuoi"."A_Lam_D310"."Nguon"='Lâm'

[Err] 错误:关系“A_Lam_D310”的列“MangLuoi”不存在第 1 行:更新“MangLuoi”。“A_Lam_D310”设置“MangLuoi”。“A_Lam_D310”。”...

现在我尝试 UPDATE "MangLuoi"."A_Lam_D310" SET "Nguon"='Lâm'

IT 显示 ok :)) 通过消息:时间:0.035 秒

受影响的行数:29

感谢分享和回答。

于 2021-08-14T09:36:04.010 回答