fix(deploy): 修复人工 SKU 规范化迁移冲突

This commit is contained in:
yml2213
2026-11-05 16:26:57 +08:00
parent 4e83dbb84c
commit b72d5877da
@@ -90,6 +90,27 @@ SET internal_sku = canonicalize_internal_sku(internal_sku),
updated_at = NOW()
WHERE internal_sku <> canonicalize_internal_sku(internal_sku);
-- 人工 SKU 登记表是扫描派生数据。历史数据可能因大小写/空白差异登记了多行,
-- 规范化后会撞唯一键;先去重,优先保留有配置、统计更完整且更新时间更晚的行。
WITH ranked_registry AS (
SELECT
id,
ROW_NUMBER() OVER (
PARTITION BY canonicalize_internal_sku(sku_key)
ORDER BY
(config_id IS NOT NULL) DESC,
item_count DESC,
updated_at DESC,
id DESC
) AS candidate_rank
FROM manual_sku_registry
WHERE canonicalize_internal_sku(sku_key) IS NOT NULL
)
DELETE FROM manual_sku_registry registry
USING ranked_registry ranked
WHERE registry.id = ranked.id
AND ranked.candidate_rank > 1;
UPDATE manual_fulfillment_configs
SET sku_key = canonicalize_internal_sku(sku_key),
updated_at = NOW()