带别名的INSERT无法在PostgreSQL上运行

时间:2015-02-11 13:00:30

标签: postgresql sql-insert postgresql-9.3

PostgreSQL上的SQL查询:

insert into TOKEPOOLAMT (TOKEPOOLAMT.TOKEPOOLAMTID,TOKEPOOLAMT.TOKERULEID)
values (151, 176);

给出错误:

com.edb.util.PSQLException:
ERROR: column "tokepoolamt" of relation "tokepoolamt" does not exist

可是:

insert into TOKEPOOLAMT (TOKEPOOLAMTID,TOKERULEID) values (151, 176);

工作正常。

有人可以解释为什么别名与insert语句中的列不起作用吗?

1 个答案:

答案 0 :(得分:3)

这里没有涉及别名。您的错误是INSERT命令的列列表中的列名不能是表限定的。 @pozs已经提供了手册in his comment中的拟合引用。

  

我不认为这是一个案例问题。我尝试了两种情况。

这是错过了重点。在Postgres中,标识符折叠为小写除非双引号。如果你在创建时双引号,你保留了一个区分大小写的拼写,并且需要对该对象的其余部分进行双引号 - 除非它是一个合法的小写名称,否则引用将不会差异。详细说明: