-- ----------------------------
-- 为薪资表和社保表添加唯一约束
-- 约束规则：员工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';
