fix(deploy): 修复人工 SKU 规范化迁移冲突
This commit is contained in:
@@ -90,6 +90,27 @@ SET internal_sku = canonicalize_internal_sku(internal_sku),
|
|||||||
updated_at = NOW()
|
updated_at = NOW()
|
||||||
WHERE internal_sku <> canonicalize_internal_sku(internal_sku);
|
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
|
UPDATE manual_fulfillment_configs
|
||||||
SET sku_key = canonicalize_internal_sku(sku_key),
|
SET sku_key = canonicalize_internal_sku(sku_key),
|
||||||
updated_at = NOW()
|
updated_at = NOW()
|
||||||
|
|||||||
Reference in New Issue
Block a user