Du behöver bara se till att du har ställt in en främmande nyckel från den underordnade raden till dess överordnade, med ON DELETE CASCASDE
alternativ inställt på den främmande nyckeln. Detta fungerar lika bra som en självreferenstabell som för referenser i separata tabeller. För att ta bort trädet, radera helt enkelt den överordnade noden. Alla underordnade rader kommer att raderas summariskt.
t.ex. Givet:
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);
Vi kan ta bort hela det första trädet genom att helt enkelt ta bort rotnoden:
DELETE FROM MYTable WHERE ID = 1;
Observera dock att från Dokumenten att det finns en gräns för djupet av CASCADE
tar bort: