31 lines
1.2 KiB
SQL
31 lines
1.2 KiB
SQL
SET search_path TO atlas, public;
|
|
|
|
-- 包装重量与尺寸可分别由商品通用值或逐 SKU 值填写;空草稿也需要保存模式。
|
|
ALTER TABLE products
|
|
ADD COLUMN package_weight_mode TEXT NOT NULL DEFAULT 'common'
|
|
CHECK (package_weight_mode IN ('common', 'variant')),
|
|
ADD COLUMN package_dimensions_mode TEXT NOT NULL DEFAULT 'common'
|
|
CHECK (package_dimensions_mode IN ('common', 'variant'));
|
|
|
|
-- 旧编辑器在每个 SKU 都有对应覆盖值时即展示逐 SKU 表单,迁移时保留该显示模式。
|
|
UPDATE products p
|
|
SET package_weight_mode = 'variant'
|
|
WHERE EXISTS (
|
|
SELECT 1 FROM product_variants v WHERE v.product_id = p.id AND v.deleted_at IS NULL
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM product_variants v
|
|
WHERE v.product_id = p.id AND v.deleted_at IS NULL AND v.shipping_weight_g IS NULL
|
|
);
|
|
|
|
UPDATE products p
|
|
SET package_dimensions_mode = 'variant'
|
|
WHERE EXISTS (
|
|
SELECT 1 FROM product_variants v WHERE v.product_id = p.id AND v.deleted_at IS NULL
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM product_variants v
|
|
WHERE v.product_id = p.id AND v.deleted_at IS NULL
|
|
AND (v.package_length_mm IS NULL OR v.package_width_mm IS NULL OR v.package_height_mm IS NULL)
|
|
);
|