2013-05-13 3 views
0

Я использую soci с C++ для доступа к моей базе данных. Можно ли изменить следующее выражение таким образом, чтобы получить новый первичный ключ, который был присвоен строке, добавленной этим выражением?soci: вернуть первичный ключ после слова «вставить в»

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

e.g.

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

Чтобы я мог продолжить работу, используя newID? id в этом случае первичный ключ (bigserial)

ответ

2

В SQL вы можете использовать RETURNING, чтобы получить сгенерированный идентификатор.
как: INSERT INTO tbloCustomer (Name) VALUES ('Goofy') RETURNING ID;
(Если первичный ключ называется ID;)

+0

Я не знаю, как сформулировать это с Soci. На этой странице: http://soci.sourceforge.net/doc/3.2/exchange.html приведены примеры, но без использования «return» – Anonymous

+0

Извините, кажется, что «RETURNING» работает только с PostgreSQL, поскольку это расширение .. http: //www.postgresql.org/docs/9.3/static/sql-insert.html – Kuchi

+2

к счастью, используя postgres и "[...] return id", soci :: in (id); работает как шарм, THX! – Anonymous

 Смежные вопросы

  • Нет связанных вопросов^_^