Fixed #24880 -- Added more explicit docs on select_for_update() on SQLite.

This commit is contained in:
Przemysław Suliga 2015-05-31 20:15:45 +02:00 committed by Tim Graham
parent 59383f1e3a
commit d29ed3f355

View File

@ -1485,14 +1485,17 @@ do not support ``nowait``, such as MySQL, will cause a
:exc:`~django.db.DatabaseError` to be raised. This is in order to prevent code :exc:`~django.db.DatabaseError` to be raised. This is in order to prevent code
unexpectedly blocking. unexpectedly blocking.
Evaluating a queryset with ``select_for_update()`` in autocommit mode is Evaluating a queryset with ``select_for_update()`` in autocommit mode on
a :exc:`~django.db.transaction.TransactionManagementError` error because the backends which support ``SELECT ... FOR UPDATE`` is a
:exc:`~django.db.transaction.TransactionManagementError` error because the
rows are not locked in that case. If allowed, this would facilitate data rows are not locked in that case. If allowed, this would facilitate data
corruption and could easily be caused by calling code that expects to be run in corruption and could easily be caused by calling code that expects to be run in
a transaction outside of one. a transaction outside of one.
Using ``select_for_update()`` on backends which do not support Using ``select_for_update()`` on backends which do not support
``SELECT ... FOR UPDATE`` (such as SQLite) will have no effect. ``SELECT ... FOR UPDATE`` (such as SQLite) will have no effect.
``SELECT ... FOR UPDATE`` will not be added to the query, and an error isn't
raised if ``select_for_update()`` is used in autocommit mode.
.. warning:: .. warning::