# 外键约束行为

# CASCADE

当你希望在删除或更新主表记录时,自动删除或更新所有关联的子表记录。适用于主从关系非常紧密的场景,例如订单和订单项。

示例:删除一个客户时,也删除该客户的所有订单。

# SET NULL

当你希望在删除或更新主表记录时,只将子表中的外键列设置为NULL,而不删除子表记录。适用于子表记录可以存在但没有关联的场景。

示例:删除一个部门时,将该部门的所有员工的department_id设为NULL,但不删除员工记录。

# NO ACTION

当你希望严格维护数据的完整性,不允许删除或更新主表记录,除非所有相关的子表记录已经被处理。适用于需要手动管理数据的场景。

示例:不允许删除有订单的客户,除非这些订单被转移或处理。

# RESTRICT

类似于NO ACTION,但会立即检查外键约束,而不是推迟到事务提交时。