-- 方案商归属从「品牌商」下移到「产品」。 -- 原因:方案商 = 这套产品用的芯片方案提供方,同一个品牌商的不同产品可能用不同方案商的方案, -- 挂在品牌商上会串号——生产设备码的服务ID(CID)取的就是它。 -- brand.providerid 保留列但停止读写(后端已不再写入),待确认无回滚需求后再删列。 \set ON_ERROR_STOP on BEGIN; -- 1. 产品级方案商归属 ALTER TABLE product ADD COLUMN IF NOT EXISTS providerid integer DEFAULT 0; CREATE INDEX IF NOT EXISTS idx_product_providerid ON product (providerid); -- 2. 历史产品按原品牌商归属回填(品牌商没归属或方案商已不存在的,留 0 由后台补录) UPDATE product p SET providerid = b.providerid FROM brand b WHERE b.id = p.brandid AND COALESCE(p.providerid, 0) = 0 AND COALESCE(b.providerid, 0) <> 0 AND EXISTS (SELECT 1 FROM solution_provider s WHERE s.id = b.providerid); COMMIT; -- 回填后核对:仍未绑定方案商的产品(后台产品管理里逐个补,补完才能正常生产设备码) -- SELECT id, devicename, brandid FROM product WHERE COALESCE(providerid,0) = 0 ORDER BY id; -- ── 同批:产品创建时间 + 产品说明 ────────────────────────────────────────── -- createtime 只在新增时写一次(历史产品无从还原,留 0,后台显示为 "-"); -- description 是「这款产品是什么、有什么特性」,与版本更新说明 updatedescription 无关。 BEGIN; ALTER TABLE product ADD COLUMN IF NOT EXISTS createtime bigint DEFAULT 0; ALTER TABLE product ADD COLUMN IF NOT EXISTS description text DEFAULT ''; COMMIT; -- ── 同批:品牌商创建时间 ─────────────────────────────────────────────────── -- 与产品一致,只在新增时写一次;历史品牌商无从还原,留 0,后台显示为 "-"。 BEGIN; ALTER TABLE brand ADD COLUMN IF NOT EXISTS createtime bigint DEFAULT 0; COMMIT;