Neste capítulo, examinaremos a expressão Multiple Table Deletes, que é semelhante ao uso da função Multiple Table Updates.
Mais de uma tabela pode ser referenciada na cláusula WHERE da instrução DELETE em muitos dialetos do DBMS. Para PG e MySQL, é usada a sintaxe “DELETE USING”; e para o SQL Server, usar a expressão “DELETE FROM” se refere a mais de uma tabela. The SQLAlchemydelete() construct suporta ambos os modos implicitamente, especificando várias tabelas na cláusula WHERE da seguinte maneira -
stmt = users.delete().\
where(users.c.id == addresses.c.id).\
where(addresses.c.email_address.startswith('xyz%'))
conn.execute(stmt)
Em um back-end PostgreSQL, o SQL resultante da instrução acima seria processado como -
DELETE FROM users USING addresses
WHERE users.id = addresses.id
AND (addresses.email_address LIKE %(email_address_1)s || '%%')
Se este método for usado com um banco de dados que não suporta este comportamento, o compilador irá disparar NotImplementedError.