-- 修复用户模板表的唯一约束问题
-- 解决逻辑删除与唯一约束的冲突

-- 1. 删除原有的唯一约束
ALTER TABLE `user_template` DROP INDEX `uk_user_template_name`;

-- 2. 创建条件唯一索引，只对未删除的记录生效
-- MySQL 5.7+ 支持函数索引，但为了兼容性，我们使用另一种方案
-- 创建一个复合索引，对于已删除的记录，使用 NULL 值来避免唯一约束
ALTER TABLE `user_template` ADD UNIQUE INDEX `uk_user_template_name_active` (`user_id`, `template_name`, (CASE WHEN deleted = 0 THEN 0 ELSE NULL END));

-- 注意：这个索引允许以下情况：
-- - 用户A有模板"test1"，deleted=0（正常）- 唯一
-- - 用户A有多个模板"test1"，deleted=1（已删除）- 允许多个
-- 但不允许：
-- - 用户A有两个模板"test1"，都是deleted=0
