pqxx返回刚刚插入的行的id

时间:2014-10-23 16:12:57

标签: c++ database postgresql optimization libpqxx

我正在使用c ++ 4.8(可用4.9)和pqxx驱动程序版本。 4.0.1。 postgresdb是最新稳定的。

我的问题是复杂性和资源平衡:

我需要执行insert to database(并且可选择pqxx :: result)和id,因为表id是基于nextval(table_seq_id)

是否可以获得插入行的id?有一个解决方法可以向db询问有关当前值的顺序,只需插入当前值+ 1(或+ n)的查询,但这需要执行"插入并询问"链

Db应该能够存储超过6K的大型请求/per.sec。所以我想问一下id尽可能不频繁。批量插入不是一种选择。

1 个答案:

答案 0 :(得分:6)

如文档here所示,您可以向RETURNING查询添加INSERT子句,以便从插入的行返回值。他们给出了一个类似于你想要的例子,返回一个ID:

INSERT INTO distributors (did, dname) VALUES (DEFAULT, 'XYZ Widgets')
   RETURNING did;