2013-05-13 38 views
0

Im使用soci和C++来访问我的数据库。是否有可能通过某种方式修改以下表达式,以获取由该表达式添加的行的新主键?soci:在“insert into”后返​​回主键

*dbSession << "insert into myTable(myRow) values (:myVal)", soci::use(myVal); 

例如,

long newID = *dbSession << "insert into myTable(myRow) values (:myVal)", soci::use(myVal); 

这样我就可以继续使用newID工作了? id在这种情况下是主键(bigserial)

回答

2

在SQL中,您可以使用RETURNING来获取生成的ID。
像:INSERT INTO tbloCustomer (Name) VALUES ('Goofy') RETURNING ID;
(如果你的主键被称为ID)

+0

我不知道如何与SOCI制定这个。在这个页面上:http://soci.sourceforge.net/doc/3.2/exchange.html是一些例子,但没有使用“返回” – Anonymous 2013-05-13 15:43:15

+0

对不起,似乎'RETURNING'只适用于PostgreSQL,因为它是一个扩展.. http: //www.postgresql.org/docs/9.3/static/sql-insert.html – Kuchi 2013-05-13 15:58:58

+2

幸运的是我使用postgres和“[...]返回id”,soci :: into(id);像魅力一样工作,thx! – Anonymous 2013-05-13 17:17:58