Bạn chỉ cần đảm bảo rằng bạn đã thiết lập khóa ngoại từ hàng con đến hàng mẹ, với ON DELETE CASCASDE
tùy chọn đặt trên khóa ngoại. Điều này hoạt động tốt như một bảng tự tham chiếu cũng như nó hoạt động với các tham chiếu trong các bảng riêng biệt. Để xóa cây, chỉ cần xóa nút cha. Tất cả các hàng con sẽ bị xóa hoàn toàn.
ví dụ. Đã cho:
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);
Chúng ta có thể xóa toàn bộ cây đầu tiên bằng cách xóa nút gốc:
DELETE FROM MYTable WHERE ID = 1;
Tuy nhiên, lưu ý rằng từ Tài liệu rằng có giới hạn về độ sâu của CASCADE
xóa: