mirror of
https://github.com/django/django.git
synced 2025-06-07 04:29:12 +00:00
Fixed #11706: Added an Oracle connection option to disable the use of RETURNING INTO in INSERT statements.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14765 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
dceaa82dec
commit
1f68dc4ad4
@ -351,6 +351,8 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
|||||||
|
|
||||||
self.oracle_version = None
|
self.oracle_version = None
|
||||||
self.features = DatabaseFeatures(self)
|
self.features = DatabaseFeatures(self)
|
||||||
|
use_returning_into = self.settings_dict["OPTIONS"].get('use_returning_into', True)
|
||||||
|
self.features.can_return_id_from_insert = use_returning_into
|
||||||
self.ops = DatabaseOperations()
|
self.ops = DatabaseOperations()
|
||||||
self.client = DatabaseClient(self)
|
self.client = DatabaseClient(self)
|
||||||
self.creation = DatabaseCreation(self)
|
self.creation = DatabaseCreation(self)
|
||||||
@ -377,7 +379,10 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
|||||||
cursor = None
|
cursor = None
|
||||||
if not self._valid_connection():
|
if not self._valid_connection():
|
||||||
conn_string = convert_unicode(self._connect_string())
|
conn_string = convert_unicode(self._connect_string())
|
||||||
self.connection = Database.connect(conn_string, **self.settings_dict['OPTIONS'])
|
conn_params = self.settings_dict['OPTIONS'].copy()
|
||||||
|
if 'use_returning_into' in conn_params:
|
||||||
|
del conn_params['use_returning_into']
|
||||||
|
self.connection = Database.connect(conn_string, **conn_params)
|
||||||
cursor = FormatStylePlaceholderCursor(self.connection)
|
cursor = FormatStylePlaceholderCursor(self.connection)
|
||||||
# Set oracle date to ansi date format. This only needs to execute
|
# Set oracle date to ansi date format. This only needs to execute
|
||||||
# once when we create a new connection. We also set the Territory
|
# once when we create a new connection. We also set the Territory
|
||||||
|
@ -585,6 +585,23 @@ your Oracle database configuration to True::
|
|||||||
|
|
||||||
Failure to do this may result in crashes and other odd behavior.
|
Failure to do this may result in crashes and other odd behavior.
|
||||||
|
|
||||||
|
INSERT ... RETURNING INTO
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
By default, the Oracle backend uses a ``RETURNING INTO`` clause to efficiently
|
||||||
|
retrieve the value of an ``AutoField`` when inserting new rows. This behavior
|
||||||
|
may result in a ``DatabaseError`` in certain unusual setups, such as when
|
||||||
|
inserting into a remote table, or into a view with an ``INSTEAD OF`` trigger.
|
||||||
|
The ``RETURNING INTO`` clause can be disabled by setting the
|
||||||
|
``use_returning_into`` option of the database configuration to False::
|
||||||
|
|
||||||
|
'OPTIONS': {
|
||||||
|
'use_returning_into': False,
|
||||||
|
},
|
||||||
|
|
||||||
|
In this case, the Oracle backend will use a separate ``SELECT`` query to
|
||||||
|
retrieve AutoField values.
|
||||||
|
|
||||||
Tablespace options
|
Tablespace options
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user