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.