-- ---------------------------- -- 为薪资表和社保表添加唯一约束 -- 约束规则:员工ID + 年月 + 删除标志 -- 防止同一员工在同一月份有多条记录 -- ---------------------------- -- ---------------------------- -- 1. 工资表 biz_salary 添加唯一约束 -- ---------------------------- -- 先删除可能存在的旧约束 ALTER TABLE biz_salary DROP INDEX IF EXISTS uk_employee_salary_month; ALTER TABLE biz_salary DROP INDEX IF EXISTS uk_employee_salary_month_del; -- 添加唯一约束:员工ID + 工资月份 + 删除标志 ALTER TABLE biz_salary ADD UNIQUE KEY uk_employee_salary_month_del (employee_id, salary_month, del_flag) COMMENT '同一员工同一月份只能有一条有效记录'; -- ---------------------------- -- 2. 社保表 biz_social_security 添加唯一约束 -- ---------------------------- -- 先删除可能存在的旧约束 ALTER TABLE biz_social_security DROP INDEX IF EXISTS uk_employee_belong_month; ALTER TABLE biz_social_security DROP INDEX IF EXISTS uk_employee_belong_month_del; -- 添加唯一约束:员工ID + 所属月份 + 删除标志 ALTER TABLE biz_social_security ADD UNIQUE KEY uk_employee_belong_month_del (employee_id, belong_month, del_flag) COMMENT '同一员工同一月份只能有一条有效记录'; -- ---------------------------- -- 查询验证 -- ---------------------------- -- 查看工资表的唯一约束 SHOW INDEX FROM biz_salary WHERE Key_name = 'uk_employee_salary_month_del'; -- 查看社保表的唯一约束 SHOW INDEX FROM biz_social_security WHERE Key_name = 'uk_employee_belong_month_del';