关系型数据库 delete on cascade
Database

关系型数据库 delete on cascade

在关系型数据库中,DELETE ON CASCADE 是一种外键约束选项,用于指定当父表中的某条记录被删除时,所有与之相关联的子表中的记录也会自动被删除。这种机制确保了数据库的引用完整性,避免了“孤儿记录”的出现。

具体例子

假设我们有两个表:Orders(订单表)和 OrderItems(订单项表)。
  1. Orders(父表):
      • OrderID(主键)
      • CustomerName
      • OrderDate
  1. 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 记录也会被自动删除。