-- ===================================================================================== -- 为没有SKU的商品生成默认SKU -- 说明:购物车逻辑依赖SKU ID,如果商品没有SKU数据,前端生成的模拟SKU ID会导致数据库外键约束错误 -- ===================================================================================== DO $$ DECLARE v_product RECORD; v_sku_id UUID; v_count INT := 0; BEGIN -- 遍历所有没有SKU的商品 FOR v_product IN SELECT p.id, p.product_code, p.base_price, p.total_stock FROM public.ml_products p LEFT JOIN public.ml_product_skus s ON p.id = s.product_id WHERE s.id IS NULL LOOP -- 生成默认SKU INSERT INTO public.ml_product_skus ( product_id, sku_code, specifications, price, stock, status ) VALUES ( v_product.id, v_product.product_code || '-DEF', '{"默认": "标准规格"}', v_product.base_price, v_product.total_stock, 1 ); v_count := v_count + 1; END LOOP; RAISE NOTICE '已为 % 个商品生成默认SKU', v_count; END $$;