mirror of
https://github.com/django/django.git
synced 2025-04-04 21:46:40 +00:00
Fixed #36213 -- Doc'd MySQL's handling of self-select updates in QuerySet.update().
Co-authored-by: Andro Ranogajec <ranogaet@gmail.com>
This commit is contained in:
parent
3ee90747c8
commit
be1b776ad8
@ -2961,6 +2961,14 @@ Using ``update()`` also prevents a race condition wherein something might
|
||||
change in your database in the short period of time between loading the object
|
||||
and calling ``save()``.
|
||||
|
||||
.. admonition:: MySQL does not support self-select updates
|
||||
|
||||
On MySQL, ``QuerySet.update()`` may execute a ``SELECT`` followed by an
|
||||
``UPDATE`` instead of a single ``UPDATE`` when filtering on related tables,
|
||||
which can introduce a race condition if concurrent changes occur between
|
||||
the queries. To ensure atomicity, consider using transactions or avoiding
|
||||
such filter conditions on MySQL.
|
||||
|
||||
Finally, realize that ``update()`` does an update at the SQL level and, thus,
|
||||
does not call any ``save()`` methods on your models, nor does it emit the
|
||||
:attr:`~django.db.models.signals.pre_save` or
|
||||
|
Loading…
x
Reference in New Issue
Block a user