Musíte se pouze ujistit, že jste nastavili cizí klíč z podřízeného řádku do jeho nadřazeného řádku pomocí příkazu ON DELETE CASCASDE
možnost nastavená na cizím klíči. To funguje stejně dobře jako samoodkazovací tabulka i odkazy v samostatných tabulkách. Chcete-li strom odstranit, jednoduše odstraňte nadřazený uzel. Všechny podřízené řádky budou souhrnně smazány.
např. Vzhledem k:
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);
Můžeme odstranit celý první strom jednoduchým odstraněním kořenového uzlu:
DELETE FROM MYTable WHERE ID = 1;
Upozorňujeme však, že z Dokumenty že existuje omezení hloubky CASCADE
smaže: