fix(deploy): 修复人工 SKU 规范化迁移冲突
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user