dujian преди 2 дни
родител
ревизия
11ce6ef75d
променени са 1 файла, в които са добавени 3 реда и са изтрити 1 реда
  1. 3 1
      alien-entity/src/main/resources/db/migration/life_fans_follow_pair_unique.sql

+ 3 - 1
alien-entity/src/main/resources/db/migration/life_fans_follow_pair_unique.sql

@@ -1,5 +1,6 @@
 -- 同一对 (followed_id, fans_id) 只允许一行,避免并发/重复调用产生多条有效关注,
 -- 同一对 (followed_id, fans_id) 只允许一行,避免并发/重复调用产生多条有效关注,
 -- 与应用层 revive + INSERT 兜底一致。
 -- 与应用层 revive + INSERT 兜底一致。
+-- 保留规则:优先 delete_flag=0,否则保留最大 id。
 -- 需要 MySQL 8+(窗口函数)。
 -- 需要 MySQL 8+(窗口函数)。
 -- 若 UNIQUE KEY uk_life_fans_follow_pair 已存在请勿重复执行 ADD,必要时先 DROP。
 -- 若 UNIQUE KEY uk_life_fans_follow_pair 已存在请勿重复执行 ADD,必要时先 DROP。
 
 
@@ -9,7 +10,8 @@ WHERE id IN (
                        SELECT lf.id AS id,
                        SELECT lf.id AS id,
                               ROW_NUMBER() OVER (
                               ROW_NUMBER() OVER (
                                       PARTITION BY lf.followed_id, lf.fans_id
                                       PARTITION BY lf.followed_id, lf.fans_id
-                                          ORDER BY CASE WHEN lf.delete_flag = 0 THEN 0 ELSE 1 END, lf.id ASC
+                                          ORDER BY CASE WHEN lf.delete_flag = 0 THEN 0 ELSE 1 END,
+                                                   lf.id DESC
                                   )       AS rn
                                   )       AS rn
                        FROM life_fans lf
                        FROM life_fans lf
                    ) ranked
                    ) ranked