Du skal bare sikre dig, at du har konfigureret en fremmednøgle fra den underordnede række til dens overordnede, med ON DELETE CASCASDE
indstilling indstillet på fremmednøglen. Dette fungerer lige så godt som en selvrefererende tabel som for referencer i separate tabeller. For at slette træet skal du blot slette den overordnede node. Alle underordnede rækker vil blive slettet.
for eksempel. 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 fjerne hele det første træ ved blot at slette rodnoden:
DELETE FROM MYTable WHERE ID = 1;
Bemærk dog, at fra Docs at der er en grænse for dybden af CASCADE
sletter: