SQLAlchemy Core - Eliminazioni di più tabelle
In questo capitolo esamineremo l'espressione Eliminazioni di più tabelle che è simile all'utilizzo della funzione Aggiornamenti di più tabelle.
È possibile fare riferimento a più di una tabella nella clausola WHERE dell'istruzione DELETE in molti dialetti DBMS. Per PG e MySQL, viene utilizzata la sintassi "DELETE USING"; e per SQL Server, l'utilizzo dell'espressione "DELETE FROM" fa riferimento a più di una tabella. Il SQLAlchemydelete() costrutto supporta entrambe queste modalità implicitamente, specificando più tabelle nella clausola WHERE come segue:
stmt = users.delete().\
where(users.c.id == addresses.c.id).\
where(addresses.c.email_address.startswith('xyz%'))
conn.execute(stmt)
Su un backend PostgreSQL, l'SQL risultante dall'istruzione precedente verrà visualizzato come:
DELETE FROM users USING addresses
WHERE users.id = addresses.id
AND (addresses.email_address LIKE %(email_address_1)s || '%%')
Se questo metodo viene utilizzato con un database che non supporta questo comportamento, il compilatore solleverà NotImplementedError.