Просто трябва да се уверите, че сте настроили външен ключ от дъщерния ред към неговия родител, с ON DELETE CASCASDE
опция, зададена на външния ключ. Това работи еднакво добре със самореферентна таблица, както и с препратки в отделни таблици. За да изтриете дървото, просто изтрийте родителския възел. Всички дъщерни редове ще бъдат изтрити обобщено.
напр. Дадено:
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);
Можем да премахнем цялото първо дърво, като просто изтрием основния възел:
DELETE FROM MYTable WHERE ID = 1;
Имайте предвид обаче, че от Документите че има ограничение за дълбочината на CASCADE
изтрива: