我们有一个 java 数据库抽象,可以为我们执行许多插入操作。在运行时我们会知道表名、要插入的列名和值。由此我们生成一个准备好的语句并执行插入。
在 sql server 领域,我们会将 select id = @@identity 添加到生成的 sql 末尾,以获取查询返回的新生成的 id。
现在我们正在迁移到 postgres,这不再有效。据我了解,在 postgres 中你可以这样做,
insert into foo(a, b) values('a', 'b') returning ID
我们的问题是,在运行时我们不知道 ID 列的名称,也不知道序列的名称。有没有办法在不知道序列名称或列名称的情况下一般获取新插入序列的值?
最佳答案
如果您的 insert
没有触发进一步的插入,您可以在 insert
语句之后使用 SELECT LASTVAL();
关于java - Postgresql,使用 JDBC 插入后获取生成的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208095/