从昨天开始,这件事让我白白傻了(谷歌搜索了很多,但没有找到任何其他有相同问题的开发人员)。我正在将使用 postgresql 7 的 java (jdk5) 编写的应用程序服务器升级到使用 postgresql 9 的 jdk7。
简单而荒谬的问题:
在同一语句中插入和选择:
insert into table(a,b) values('a','b') ; select currval('table_pkey_id')
没什么特别的,看起来简单明了......但是使用PostgreSQL-9.3-1100.jdbc3.jar不能工作更多,在主题中抛出错误。
SQL 语句像往常一样使用 PGadmin,返回插入行的 ID。但是使用 javam 和 pg9/java7 进行相同的查询,它会抛出错误,就像我在简单的插入语句上使用 executeQuery 一样。
stmt=cnn.createStatement(rst.TYPE_SCROLL_INSENSITIVE,rst.CONCUR_READ_ONLY);
stmt.executeQuery(sql);
org.postgresql.util.PSQLException:查询未返回任何结果。
为什么是上帝?!我想要并且需要解决此问题,而不会破坏上面的 2 个 sql 语句。在executeQuery实现中似乎是一个非常愚蠢的错误。
请反馈。谢谢。
.max
我认为您最好更改为:
insert into table(a,b) values('a','b') RETURNING id;
现在,所有受支持的 PostgreSQL 版本都支持 RETURNING。