39 lines
1.6 KiB
SQL
39 lines
1.6 KiB
SQL
-- ----------------------------
|
||
-- 为薪资表和社保表添加唯一约束
|
||
-- 约束规则:员工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';
|