En este capítulo, veremos la expresión Eliminación de varias tablas, que es similar al uso de la función Actualizaciones de varias tablas.
Se puede hacer referencia a más de una tabla en la cláusula WHERE de la instrucción DELETE en muchos dialectos DBMS. Para PG y MySQL, se usa la sintaxis “DELETE USING”; y para SQL Server, el uso de la expresión "DELETE FROM" se refiere a más de una tabla. La alquimia SQLAdelete() construct admite ambos modos implícitamente, al especificar varias tablas en la cláusula WHERE de la siguiente manera:
stmt = users.delete().\
where(users.c.id == addresses.c.id).\
where(addresses.c.email_address.startswith('xyz%'))
conn.execute(stmt)
En un backend de PostgreSQL, el SQL resultante de la declaración anterior se representaría como:
DELETE FROM users USING addresses
WHERE users.id = addresses.id
AND (addresses.email_address LIKE %(email_address_1)s || '%%')
Si este método se usa con una base de datos que no admite este comportamiento, el compilador generará NotImplementedError.