Cancellare record da più tabelle relazionate
Abbiamo visto nella Guida ad SQL del sito come effettuare ricerche su più tabelle grazie all'istruzione JOIN, oppure usando la sintassi di base dell'SQL.
Non è possibile instaurare relazioni fisiche tra più tabelle se non in lettura, quindi sia per l'inserimento, per la modifica, che per la cancellazione (caso specifico affrontato in questa sede), le relazioni instaurabili sono solo logiche.
In fase di lettura avremo dei campi ad hoc per instaurare la relazione, ad esempio "tabella_a.id" (di tipo autoincrement) e "tabella_b.id_tab_a" (di tipo number).
Via codice applicativo (ASP, PHP, Visual Basic o quel che sia) e non via codice SQL, imposteremo due query di eliminazione che verranno eseguite di seguito ma separatamente.
Un esempio pratico
DELETE * FROM tabella_a WHERE id = 1Elimina tutti i dati dalla tabella A che hanno il contatore uguale a 1.
DELETE * FROM tabella_b WHERE id_tab_a = 1Elimina tutti i dati dalla tabella B che hanno il campo di riferimento della tabella A uguale a 1.
Lo scopo della cancellazione multipla, dunque, è quello di non lasciare nella tabella B dei campi inutili, dato che la loro presenza ha senso solo se esiste il dato corrispondente nella tabella principale; non esistendo più nella tabella A, nella tabella B non hanno più motivo di esistere.







