2026-02-11 10:42:38 +08:00
|
|
|
|
-- =============================================
|
|
|
|
|
|
-- 员工调动记录唯一性约束
|
|
|
|
|
|
-- 功能说明:根据 员工ID + 调动前部门ID + 调动后部门ID + 调动日期 创建唯一索引
|
|
|
|
|
|
-- 创建时间:2026-02-11
|
|
|
|
|
|
-- =============================================
|
|
|
|
|
|
|
|
|
|
|
|
-- 1. 检查并清理现有重复数据(保留最早创建的记录)
|
2026-03-03 16:14:16 +08:00
|
|
|
|
DELETE
|
|
|
|
|
|
t1 FROM ccdi_staff_transfer t1
|
2026-02-11 10:42:38 +08:00
|
|
|
|
INNER JOIN ccdi_staff_transfer t2
|
|
|
|
|
|
WHERE t1.staff_id = t2.staff_id
|
|
|
|
|
|
AND t1.dept_id_before = t2.dept_id_before
|
|
|
|
|
|
AND t1.dept_id_after = t2.dept_id_after
|
|
|
|
|
|
AND t1.transfer_date = t2.transfer_date
|
|
|
|
|
|
AND t1.id > t2.id;
|
|
|
|
|
|
|
|
|
|
|
|
-- 2. 添加唯一索引
|
|
|
|
|
|
-- 创建唯一索引(MySQL不支持 DROP INDEX IF EXISTS 语法)
|
|
|
|
|
|
CREATE UNIQUE INDEX uk_staff_transfer_date ON ccdi_staff_transfer (staff_id, dept_id_before, dept_id_after, transfer_date);
|
|
|
|
|
|
|
|
|
|
|
|
-- 执行结果说明
|
|
|
|
|
|
-- 1. 第一条SQL会删除重复数据,只保留每组重复数据中ID最小的记录(最早创建的)
|
|
|
|
|
|
-- 2. 第二条SQL删除可能存在的旧索引
|
|
|
|
|
|
-- 3. 第三条SQL创建唯一索引,确保后续不会再插入重复数据
|