在关系型数据库中,
DELETE ON CASCADE
是一种外键约束选项,用于指定当父表中的某条记录被删除时,所有与之相关联的子表中的记录也会自动被删除。这种机制确保了数据库的引用完整性,避免了“孤儿记录”的出现。具体例子
假设我们有两个表:
Orders
(订单表)和 OrderItems
(订单项表)。Orders
表(父表):OrderID
(主键)CustomerName
OrderDate
OrderItems
表(子表):OrderItemID
(主键)OrderID
(外键,引用Orders
表的OrderID
)ProductName
Quantity
创建表并设置 DELETE ON CASCADE
CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerName VARCHAR(100), OrderDate DATE ); CREATE TABLE OrderItems ( OrderItemID INT PRIMARY KEY, OrderID INT, ProductName VARCHAR(100), Quantity INT, FOREIGN KEY (OrderID) REFERENCES Orders(OrderID) ON DELETE CASCADE );
删除父表记录
假设我们删除
Orders
表中 OrderID
为 1 的记录:DELETE FROM Orders WHERE OrderID = 1;
由于
OrderItems
表中的 OrderID
列引用了 Orders
表的 OrderID
,并且设置了 ON DELETE CASCADE
,因此所有 OrderID
为 1 的 OrderItems
记录也会被自动删除。