Vous devez juste vous assurer que vous avez configuré une clé étrangère de la ligne enfant à son parent, avec le ON DELETE CASCASDE
option définie sur la clé étrangère. Cela fonctionne aussi bien avec une table auto-référençante qu'avec des références dans des tables séparées. Pour supprimer l'arborescence, supprimez simplement le nœud parent. Toutes les lignes enfants seront supprimées sommairement.
par exemple. Donné :
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);
On peut supprimer l'intégralité du premier arbre en supprimant simplement le nœud racine :
DELETE FROM MYTable WHERE ID = 1;
Notez cependant que depuis les Docs qu'il y a une limite à la profondeur de CASCADE
supprime :