1
0
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:
Babak Mahmoudy 2025-04-01 19:34:59 +11:00 committed by Sarah Boyce
parent 3ee90747c8
commit be1b776ad8

View File

@ -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