外键关联主键时ON DELETE选项及离职员工薪资记录留存咨询
解决方案
可以在不新增表属性的前提下实现需求,核心做法是不物理删除MEMBER表中的离职员工记录,具体逻辑如下:
- 先明确外键选项的限制影响:
- 若设置
ON DELETE CASCADE,删除MEMBER中的员工记录会同步删除该员工所有PAYROLL薪资数据,直接违反保留薪资记录的要求; - 若使用
ON DELETE NO ACTION(多数数据库的默认外键行为),尝试删除存在PAYROLL关联的MEMBER记录时会触发报错,无法完成删除操作。
- 若设置
- 基于此,无需删除离职员工的
MEMBER记录,而是将这些员工信息保留在表中:- 这样
PAYROLL表的外键约束始终生效,薪资记录可以完整保留; - 区分离职员工的薪资记录时,只需通过
PAYROLL关联MEMBER表的Card、Name等字段即可识别对应员工; - 在职/离职状态可通过业务逻辑判断(比如检查员工是否有最新月份的薪资记录),无需修改数据库表结构。
- 这样
内容的提问来源于stack exchange,提问作者Matteo
相关产品推荐
相关产品推荐

