Devi solo assicurarti di aver impostato una chiave esterna dalla riga figlio al suo genitore, con il ON DELETE CASCASDE
opzione impostata sulla chiave esterna. Funziona altrettanto bene con una tabella autoreferenziale come con i riferimenti in tabelle separate. Per eliminare l'albero, è sufficiente eliminare il nodo padre. Tutte le righe secondarie verranno eliminate in modo sommario.
per esempio. Dato:
CREATE TABLE MyTable
(
ID INT NOT NULL PRIMARY KEY,
ParentID INT NULL,
CONSTRAINT FK_MT_Parent FOREIGN KEY (ParentID) REFERENCES MyTable(ID) ON DELETE CASCADE
);
-- And inserting two trees of data:
-- 1-2-3
-- └-4
-- 10 - 11
INSERT INTO MyTable(ID,ParentID) VALUES
(1,null), (2,1), (3,2), (4,2),
(10,null), (11,10);
Possiamo rimuovere l'intero primo albero semplicemente eliminando il nodo radice:
DELETE FROM MYTable WHERE ID = 1;
Si noti tuttavia che dai Documenti che esiste un limite alla profondità di CASCADE
elimina: