summaryrefslogtreecommitdiff
path: root/django/db/models/sql
diff options
context:
space:
mode:
authorIan Kelly <ian.g.kelly@gmail.com>2009-03-12 23:41:27 +0000
committerIan Kelly <ian.g.kelly@gmail.com>2009-03-12 23:41:27 +0000
commitc3dc837950966013ca5a4a235e85ed85595f7161 (patch)
tree38730389f785ef5b642118a821f802f6f1750987 /django/db/models/sql
parent6d17020c1a1bd94e107defc698adc445084d01d6 (diff)
Fixed #10473: Added Oracle support for "RETURNING" ids from insert statements.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10044 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db/models/sql')
-rw-r--r--django/db/models/sql/subqueries.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/django/db/models/sql/subqueries.py b/django/db/models/sql/subqueries.py
index f421643dc8..aabe34a4ca 100644
--- a/django/db/models/sql/subqueries.py
+++ b/django/db/models/sql/subqueries.py
@@ -306,17 +306,20 @@ class InsertQuery(Query):
result = ['INSERT INTO %s' % qn(opts.db_table)]
result.append('(%s)' % ', '.join([qn(c) for c in self.columns]))
result.append('VALUES (%s)' % ', '.join(self.values))
+ params = self.params
if self.connection.features.can_return_id_from_insert:
col = "%s.%s" % (qn(opts.db_table), qn(opts.pk.column))
- result.append(self.connection.ops.return_insert_id() % col)
- return ' '.join(result), self.params
+ r_fmt, r_params = self.connection.ops.return_insert_id()
+ result.append(r_fmt % col)
+ params = params + r_params
+ return ' '.join(result), params
def execute_sql(self, return_id=False):
cursor = super(InsertQuery, self).execute_sql(None)
if not (return_id and cursor):
return
if self.connection.features.can_return_id_from_insert:
- return cursor.fetchone()[0]
+ return self.connection.ops.fetch_returned_insert_id(cursor)
return self.connection.ops.last_insert_id(cursor,
self.model._meta.db_table, self.model._meta.pk.column)