#28787: QuerySet.update() fails on MySQL if a subquery references the base table
-------------------------------------+-------------------------------------
Reporter: Paulo | Owner: nobody
Type: Bug | Status: closed
Component: Database layer | Version: 1.11
(models, ORM) |
Severity: Normal | Resolution: invalid
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Oskar Persson):
Replying to [comment:4 Sonu kumar]:
> This doesn't look to be a bug in Django. This is a more of MySQL query
parser bug.
This is not a query parser bug but a documented limitation of
[https://dev.mysql.com/doc/refman/5.7/en/subquery-errors.html MySQL]:
> You can use a subquery for assignment within an UPDATE statement because
subqueries are legal in UPDATE and DELETE statements as well as in SELECT
statements. However, you cannot use the same table (in this case, table
t1) for both the subquery FROM clause and the update target.
and [https://mariadb.com/kb/en/library/subquery-limitations/#modifying-
and-selecting-from-the-same-table MariaDB]:
> It's not possible to both modify and select from the same table in a
subquery. For example:
> {{{
> DELETE FROM staff WHERE name = (SELECT name FROM staff WHERE age=61);
> ERROR 1093 (HY000): Table 'staff' is specified twice, both
> as a target for 'DELETE' and as a separate source for data
> }}}
--
Ticket URL: <https://code.djangoproject.com/ticket/28787#comment:5>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/066.6209e171660332cdc94cc29f5ef60b7a%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.