ON DELETE CASCADE
和 ON DELETE RESTRICT
是 MySQL 中两种不同的外键约束级联操作。它们之间的主要区别在于当主表中的记录被删除时,子表中相关记录的处理方式。
- ON DELETE CASCADE:
- 当在主表中删除一条记录时,所有与之相关的子表中的匹配记录也会被自动删除。
- 这通常用于强耦合的关系,其中父表和子表的数据紧密相连,删除父表的记录时通常也期望删除子表的相关记录。
- ON DELETE RESTRICT:
- 当试图从主表中删除一条记录时,如果存在相关的子表记录,MySQL 将阻止删除操作。
- 这是一种数据完整性保护措施,确保不会因为删除主表的记录而留下孤立的子表记录。
- 如果需要删除主表记录,必须先手动删除或更新子表的相关记录。
举例说明:
假设有一个公司(companies
)表和一个员工(employees
)表,员工表通过外键关联到公司表。
- 使用
ON DELETE CASCADE
:
CREATE TABLE companies (
id INT PRIMARY KE