mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +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:
		
				
					committed by
					
						 Sarah Boyce
						Sarah Boyce
					
				
			
			
				
	
			
			
			
						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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user