在创建外键约束时,可以使用 ON DELETE 子句来指定当主键表中的记录被删除时外键表中的相应记录应该如何处理。ON DELETE 子句可以有以下几种选项:
CASCADE: 当主键表中的记录被删除时,外键表中的相应记录也会被自动删除。CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE CASCADE);SET NULL: 当主键表中的记录被删除时,外键表中的相应记录的外键列会被设置为 NULL。CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE SET NULL);RESTRICT: 默认情况下,当主键表中的记录被删除时,如果在外键表中仍然存在与之关联的记录,则会阻止删除操作。CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE RESTRICT);NO ACTION: 与 RESTRICT 类似,当主键表中的记录被删除时,如果在外键表中仍然存在与之关联的记录,则会阻止删除操作。这是默认行为。CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE NO ACTION);