我正在使用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尽可能不频繁。批量插入不是一种选择。
答案 0 :(得分:6)
如文档here所示,您可以向RETURNING
查询添加INSERT
子句,以便从插入的行返回值。他们给出了一个类似于你想要的例子,返回一个ID:
INSERT INTO distributors (did, dname) VALUES (DEFAULT, 'XYZ Widgets')
RETURNING did;