-- 别名表增加唯一约束,防止同一个人名下同名别名重复 -- -- 注意:需要先清理重复数据,再创建索引。 -- 如果先 CREATE UNIQUE INDEX,已有重复行时会直接报错。 -- 1. 清理可能存在的重复别名(保留 id 最小的那条) DELETE FROM person_aliases WHERE id NOT IN ( SELECT MIN(id) FROM person_aliases GROUP BY person_id, alias_name ); -- 2. 创建唯一索引(此时已无重复数据,不会失败) CREATE UNIQUE INDEX IF NOT EXISTS idx_aliases_unique ON person_aliases(person_id, alias_name); -- 相册关联表上增加唯一索引(已有 PRIMARY KEY,添加显式唯一索引加速) -- 同时增加每张专辑只能有一个 person 的约束 -- 先清理旧的重复关联(同一album_id关联了多个person_id的情况) DELETE FROM person_albums WHERE rowid NOT IN ( SELECT MIN(rowid) FROM person_albums GROUP BY album_id, person_id );