Musisz tylko upewnić się, że ustawiłeś klucz obcy z wiersza podrzędnego do jego rodzica, z ON DELETE CASCASDE
opcja ustawiona na kluczu obcym. Działa to równie dobrze w przypadku tabel samoodwołujących się, jak w przypadku odwołań w osobnych tabelach. Aby usunąć drzewo, po prostu usuń węzeł nadrzędny. Wszystkie wiersze podrzędne zostaną natychmiast usunięte.
np. Biorąc pod uwagę:
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);
Możemy usunąć całe pierwsze drzewo, po prostu usuwając węzeł główny:
DELETE FROM MYTable WHERE ID = 1;
Pamiętaj jednak, że z Dokumentów że istnieje limit głębokości CASCADE
usuwa: