ON DELETE SET NULL:当主表中的数据被删除时,关联表中的相关数据会被设置为NULL。需要注意的是,子表的外键列不能为NOT NULL约束。
ON UPDATE SET NULL:当主表中的数据被更新时(实际上这种操作并不常见,因为通常更新操作会保持外键关系的有效性),理论上关联表中的相关数据可以被设置为NULL,但这种用法并不推荐,因为可能会导致数据不一致。在MySQL的实际操作中,ON UPDATE SET NULL并不是一种常见的级联更新方式。
CREATE TABLE parent_table (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE child_table (
id INT PRIMARY KEY,
parent_id INT,
description VARCHAR(100),
FOREIGN KEY (parent_id) REFERENCES parent_table(id) ON DELETE CASCADE ON UPDATE CASCADE
);