From 1e5d1211d09c1f50921aa45d8c776be3758a6d89 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 28 Oct 2011 11:18:54 +0200 Subject: Implement returning of auto id using RETURNING clause in PostgreSQL Before we used a separate SELECT lastval() query which was both inefficient and error-prone in cases where INSERT may cause triggers to override the last value. --- odb/relational/pgsql/source.cxx | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'odb/relational/pgsql') diff --git a/odb/relational/pgsql/source.cxx b/odb/relational/pgsql/source.cxx index c17edc6..6bfa3d9 100644 --- a/odb/relational/pgsql/source.cxx +++ b/odb/relational/pgsql/source.cxx @@ -983,6 +983,18 @@ namespace relational } virtual void + persist_stmt_extra (type& c, relational::query_parameters&) + { + semantics::data_member* id (id_member (c)); + + if (id != 0 && id->count ("auto")) + { + os << endl + << strlit (" RETURNING " + column_qname (*id)); + } + } + + virtual void object_extra (type& c) { if (abstract (c)) -- cgit v1.1