我们有一个java数据库抽象,为我们做了很多插入。在运行时,我们将知道表名,要插入的列名和值。从那里我们生成一个准备好的声明并进行插入。
在sql server land中,我们将select id = @@ identity添加到生成的sql的末尾,以获取查询返回的新生成的id。
现在我们正在迁移到postgres,这已经不再适用了。我的理解是,你可以做到postgres,
insert into foo(a, b) values('a', 'b') returning ID
我们的问题是,在运行时我们不知道ID列的名称,也不知道序列的名称。有没有办法在不知道序列名称或列名称的情况下一般性地获取新插入序列的值?
答案 0 :(得分:2)
如果您的insert
未触发进一步插入,则可以在SELECT LASTVAL();
声明后立即使用insert