在SQL中,級聯(lián)刪除(Cascade Delete)是指當(dāng)從一個表中刪除一行數(shù)據(jù)時,與之關(guān)聯(lián)的其他表中的數(shù)據(jù)也會被自動刪除
以下是一個創(chuàng)建外鍵約束并設(shè)置級聯(lián)刪除的示例:
CREATE TABLE parent (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE child (
id INT PRIMARY KEY,
parent_id INT,
name VARCHAR(50),
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
);
在這個例子中,child
表有一個名為 parent_id
的外鍵列,它引用了 parent
表的主鍵。通過在外鍵約束上添加 ON DELETE CASCADE
選項,我們告訴數(shù)據(jù)庫在從 parent
表中刪除一行數(shù)據(jù)時,也要從 child
表中刪除所有與之關(guān)聯(lián)的行。
例如,如果我們從 parent
表中刪除一個ID為1的行,所有在 child
表中具有 parent_id
為1的行也將被自動刪除。
DELETE FROM parent WHERE id = 1;
請注意,使用級聯(lián)刪除時要謹(jǐn)慎,因為它可能導(dǎo)致大量數(shù)據(jù)被意外刪除。在實際應(yīng)用中,根據(jù)業(yè)務(wù)需求和數(shù)據(jù)完整性要求來決定是否使用級聯(lián)刪除。