Files
BMS/bms-back/sql/price/surcharge_rel.sql
T
2026-09-14 09:13:29 +08:00

40 lines
2.9 KiB
SQL

-- 附加费关联表:维护 prc_surcharge 与 bms_product(产品表) / bms_product_country(明细表) 的关系
-- 语义:
-- product_id 产品主键(外键关联 bms_product.product_id,与 product_code 一一对应)
-- product_code 产品对接代码(便于与明细表 bms_product_country 及前端交互)
-- detail_id 为空 = 产品级附加费(作用于该产品全部明细)
-- 有值 = 明细级附加费(作用于该产品某个 国家×重量段 明细)
-- 一个附加费可关联多个产品/明细;一个产品/明细可挂多个附加费(多对多)
-- 执行后即可在「产品列表」按产品/明细维护附加费关联
SET NAMES utf8mb4;
CREATE TABLE IF NOT EXISTS prc_surcharge_rel (
rel_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '关联ID',
sc_id BIGINT(20) NOT NULL COMMENT '附加费配置ID prc_surcharge.sc_id',
product_id BIGINT(20) NOT NULL COMMENT '产品ID bms_product.product_id',
product_code VARCHAR(20) NOT NULL COMMENT '产品对接代码 bms_product.product_code',
detail_id BIGINT(20) DEFAULT NULL COMMENT '产品明细ID bms_product_country.detail_id(空=作用于产品全部明细)',
created_by VARCHAR(64) DEFAULT '' COMMENT '创建人',
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
updated_by VARCHAR(64) DEFAULT '' COMMENT '更新人',
update_time DATETIME DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (rel_id),
UNIQUE KEY uk_rel_scope (sc_id, product_id, detail_id),
INDEX idx_rel_sc (sc_id),
INDEX idx_rel_product (product_id),
INDEX idx_rel_product_code (product_code),
INDEX idx_rel_detail (detail_id),
CONSTRAINT fk_rel_sc FOREIGN KEY (sc_id) REFERENCES prc_surcharge (sc_id) ON DELETE CASCADE,
CONSTRAINT fk_rel_product FOREIGN KEY (product_id) REFERENCES bms_product (product_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='附加费与产品/明细关联表';
-- 若已按旧版(无 product_id)建表且已有数据,升级步骤:
-- ALTER TABLE prc_surcharge_rel ADD COLUMN product_id BIGINT(20) DEFAULT NULL COMMENT '产品ID' AFTER sc_id;
-- UPDATE prc_surcharge_rel r JOIN bms_product p ON p.product_code = r.product_code SET r.product_id = p.product_id;
-- ALTER TABLE prc_surcharge_rel MODIFY COLUMN product_id BIGINT(20) NOT NULL COMMENT '产品ID bms_product.product_id';
-- ALTER TABLE prc_surcharge_rel ADD INDEX idx_rel_product (product_id);
-- ALTER TABLE prc_surcharge_rel ADD CONSTRAINT fk_rel_product FOREIGN KEY (product_id) REFERENCES bms_product (product_id) ON DELETE CASCADE;
-- 若上一版方案(prc_surcharge 加 product_code 字段)已执行,可手动回退(MySQL 5.7 不支持 DROP COLUMN IF EXISTS):
-- ALTER TABLE prc_surcharge DROP COLUMN product_code;