嗨,我正试图插入一个表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) |

我想我遗漏了一些非常琐碎的东西,我try 了其他一些列名,其中一些很好用,一些不起作用.我很困惑.PostgreSQL是否对insert查询的第一种语法适用的列名有限制?


Edit :

签出Girdon Linoff answer,正如Frank Heikens指出的,其他没有引号的列名在lower case中.

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

推荐答案

如果使用双引号定义列,则在引用列时通常需要使用双引号:

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

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

如果名称都是小写,则不需要双引号.

Postgresql相关问答推荐

如何确定要与给定转储文件一起使用的pg_Restore版本?

从数据集中提取彼此喜欢的用户(&Q;)

Psql:Windows 10上奇怪的错误输出编码

PostgreSQL:动态SELECT查询

PostgreSQL 中的 Datum 数据类型是什么以及它的用途是什么?

如何在 PostgreSQL 中使用正则表达式删除单词之间的所有特殊字符和多余空格

如何将 NULL 值插入 UUID 而不是零

PostgreSQL错误致命:角色 username不存在

PostgreSQL - 改变数字的精度?

在 Ubuntu 11.04 服务器中启用对 postgresql 的 PHP 支持

运算符不存在:integer = integer[] 在使用 ANY 的查询中

如何为查询执行设置语句超时

Postgres jsonbNOT contains运算符

将数据从 MS SQL 迁移到 PostgreSQL?

如何使用 Node.js 和 Postgresql 找到最后一个插入 ID?

将 csv 文件中存在的 NULL 值复制到 postgres

将数据推送到 Heroku 时出错:time zone displacement out of range

全文的 Postgresql 前缀通配符

当从 Heroku pg:pull 数据库时提示:role "root" does not exist.

pgadmin 错误:no password supplied