SQLAlchemy Core - Múltiplas exclusões de tabelas

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.