修改产品功能
This commit is contained in:
+20
-40
@@ -279,9 +279,9 @@ CREATE TABLE `ar_export_template` (
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应收账单导出模板管理';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表结构:`bms_product`
|
||||
-- 表结构:`product`
|
||||
-- ----------------------------
|
||||
CREATE TABLE `bms_product` (
|
||||
CREATE TABLE `product` (
|
||||
`product_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '产品ID',
|
||||
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品对接代码,如 WSP037',
|
||||
`product_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品名称',
|
||||
@@ -304,39 +304,16 @@ CREATE TABLE `bms_product` (
|
||||
UNIQUE KEY `uk_product_code_eff` (`product_code`,`effective_date`),
|
||||
KEY `idx_tax_status` (`tax_mode`,`status`) USING BTREE,
|
||||
KEY `idx_product_code` (`product_code`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='BMS产品主表-来自产品目录';
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品主表-来自产品目录';
|
||||
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 表结构:`bms_product_price_version`
|
||||
-- 表结构:`product_country`
|
||||
-- ----------------------------
|
||||
CREATE TABLE `bms_product_price_version` (
|
||||
`ppv_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '产品基础价格版本ID',
|
||||
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品代码',
|
||||
`product_id` bigint(20) DEFAULT NULL COMMENT '对应 bms_product.product_id(该版本产品行)',
|
||||
`version_no` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '版本号 V1/V2',
|
||||
`version_seq` int(11) NOT NULL COMMENT '版本序号,用于自动+1',
|
||||
`effective_date` date NOT NULL COMMENT '生效日期',
|
||||
`expire_date` date DEFAULT NULL COMMENT '失效日期(空=长期;下一版生效日=本版失效日)',
|
||||
`status` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '0待生效 1已生效 2已失效',
|
||||
`created_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建人',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`updated_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`ppv_id`),
|
||||
UNIQUE KEY `uk_ppv_code_seq` (`product_code`,`version_seq`),
|
||||
UNIQUE KEY `uk_ppv_code_eff` (`product_code`,`effective_date`),
|
||||
KEY `idx_ppv_code_status` (`product_code`,`status`),
|
||||
KEY `idx_ppv_product_id` (`product_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品基础价格版本';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表结构:`bms_product_country`
|
||||
-- ----------------------------
|
||||
CREATE TABLE `bms_product_country` (
|
||||
CREATE TABLE `product_country` (
|
||||
`detail_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '明细ID',
|
||||
`product_id` bigint(20) DEFAULT NULL COMMENT '产品ID(bms_product.product_id,绑定具体产品版本行)',
|
||||
`ppv_id` bigint(20) DEFAULT NULL COMMENT '产品基础价格版本ID bms_product_price_version.ppv_id',
|
||||
`product_id` bigint(20) DEFAULT NULL COMMENT '产品ID(product.product_id,绑定具体产品版本行)',
|
||||
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品代码',
|
||||
`country_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国家中文名',
|
||||
`country_code` char(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'ISO2,可空待补齐',
|
||||
@@ -361,10 +338,9 @@ CREATE TABLE `bms_product_country` (
|
||||
KEY `idx_weight_match` (`product_code`,`country_code`,`weight_min`,`weight_max`) USING BTREE,
|
||||
KEY `idx_product_eff` (`product_code`,`effective_date`,`expire_date`),
|
||||
KEY `idx_product_country_pid` (`product_id`),
|
||||
KEY `idx_product_country_ppv` (`ppv_id`),
|
||||
KEY `idx_product_country_zone` (`zone_id`),
|
||||
KEY `idx_product_country_zone_code` (`country_code`,`zone_code`),
|
||||
CONSTRAINT `fk_product_country_pid` FOREIGN KEY (`product_id`) REFERENCES `bms_product` (`product_id`) ON DELETE CASCADE
|
||||
CONSTRAINT `fk_product_country_pid` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1609 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品国家服务明细-重量段+尺寸/尾程/时效(不含运费)';
|
||||
|
||||
-- ----------------------------
|
||||
@@ -978,7 +954,7 @@ CREATE TABLE `prc_order_bill` (
|
||||
`customer_priceset_id` bigint(20) DEFAULT NULL COMMENT '客户套餐绑定ID',
|
||||
`psv_id` bigint(20) DEFAULT NULL COMMENT '套餐版本ID,对应 prc_price_set_version.psv_id',
|
||||
`psd_id` bigint(20) DEFAULT NULL COMMENT '套餐明细ID,对应 prc_price_set_detail.psd_id',
|
||||
`product_country_id` bigint(20) DEFAULT NULL COMMENT '关联 bms_product_country.detail_id',
|
||||
`product_country_id` bigint(20) DEFAULT NULL COMMENT '关联 product_country.detail_id',
|
||||
`weight_min` decimal(10,4) DEFAULT NULL COMMENT '重量段下限',
|
||||
`weight_max` decimal(10,4) DEFAULT NULL COMMENT '重量段上限',
|
||||
`weight_label` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '重量段展示',
|
||||
@@ -1291,7 +1267,7 @@ CREATE TABLE `prc_price_set_detail` (
|
||||
`weight_label` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '重量段展示',
|
||||
`weight_min` decimal(10,3) DEFAULT NULL COMMENT '重量段最小值KG(含)',
|
||||
`weight_max` decimal(10,3) DEFAULT NULL COMMENT '重量段最大值KG(含)',
|
||||
`product_country_id` bigint(20) DEFAULT NULL COMMENT 'bms_product_country.detail_id',
|
||||
`product_country_id` bigint(20) DEFAULT NULL COMMENT 'product_country.detail_id',
|
||||
`fv_value` decimal(10,4) DEFAULT NULL COMMENT '运费单价 RMB/KG',
|
||||
`fv_registration_fee` decimal(10,2) DEFAULT NULL COMMENT '挂号费 RMB/票',
|
||||
`discount_value` decimal(5,2) DEFAULT NULL COMMENT '明细折扣百分数,DISCOUNT 可覆盖默认',
|
||||
@@ -1392,7 +1368,7 @@ CREATE TABLE `prc_quote` (
|
||||
`set_type` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '计价类型 FIXED=固定价 DISCOUNT=折扣',
|
||||
`bind_priority` int(11) DEFAULT NULL COMMENT '客户套餐优先级',
|
||||
`customer_priceset_id` bigint(20) DEFAULT NULL COMMENT '客户套餐绑定ID',
|
||||
`product_country_id` bigint(20) DEFAULT NULL COMMENT '关联 bms_product_country.detail_id',
|
||||
`product_country_id` bigint(20) DEFAULT NULL COMMENT '关联 product_country.detail_id',
|
||||
`weight_min` decimal(10,4) DEFAULT NULL COMMENT '重量段下限',
|
||||
`weight_max` decimal(10,4) DEFAULT NULL COMMENT '重量段上限',
|
||||
`weight_label` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '重量段展示',
|
||||
@@ -1404,7 +1380,11 @@ CREATE TABLE `prc_quote` (
|
||||
`registration_fee` decimal(10,2) DEFAULT NULL COMMENT '挂号费',
|
||||
`freight_amount` decimal(10,2) DEFAULT NULL COMMENT '运费金额',
|
||||
`surcharge_amount` decimal(10,2) DEFAULT NULL COMMENT '附加费合计',
|
||||
`payable_total` decimal(10,2) DEFAULT NULL COMMENT '应付总额',
|
||||
`payable_total` decimal(10,2) DEFAULT NULL COMMENT '销售价/应收试算合计',
|
||||
`product_amount` decimal(18,4) DEFAULT NULL COMMENT '产品价合计',
|
||||
`redline_amount` decimal(18,4) DEFAULT NULL COMMENT '红线价合计',
|
||||
`cost_amount` decimal(18,4) DEFAULT NULL COMMENT '成本价合计(当前等于产品目录价)',
|
||||
`pay_total` decimal(18,4) DEFAULT NULL COMMENT '应付合计(当前等于成本价)',
|
||||
`currency` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'RMB' COMMENT '币种',
|
||||
`round_mode` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'HALF_UP' COMMENT '取值方式(字典bms_round_mode)',
|
||||
`created_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建人',
|
||||
@@ -1470,9 +1450,9 @@ CREATE TABLE `prc_surcharge` (
|
||||
CREATE TABLE `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) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品对接代码 bms_product.product_code',
|
||||
`detail_id` bigint(20) DEFAULT NULL COMMENT '产品明细ID bms_product_country.detail_id(空=作用于产品全部明细)',
|
||||
`product_id` bigint(20) NOT NULL COMMENT '产品ID product.product_id',
|
||||
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品对接代码 product.product_code',
|
||||
`detail_id` bigint(20) DEFAULT NULL COMMENT '产品明细ID product_country.detail_id(空=作用于产品全部明细)',
|
||||
`created_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建人',
|
||||
`create_time` datetime DEFAULT NULL,
|
||||
`updated_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新人',
|
||||
@@ -1483,7 +1463,7 @@ CREATE TABLE `prc_surcharge_rel` (
|
||||
KEY `idx_rel_product` (`product_id`),
|
||||
KEY `idx_rel_product_code` (`product_code`),
|
||||
KEY `idx_rel_detail` (`detail_id`),
|
||||
CONSTRAINT `fk_rel_product` FOREIGN KEY (`product_id`) REFERENCES `bms_product` (`product_id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_rel_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_rel_sc` FOREIGN KEY (`sc_id`) REFERENCES `prc_surcharge` (`sc_id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='附加费与产品/明细关联表';
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
-- prc_quote: product / cost amounts (run once on existing DB)
|
||||
SET @col_exists := (
|
||||
SELECT COUNT(1) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_quote' AND COLUMN_NAME = 'product_amount'
|
||||
);
|
||||
SET @sql := IF(@col_exists = 0,
|
||||
CONCAT(
|
||||
'ALTER TABLE `prc_quote` ',
|
||||
'ADD COLUMN `product_amount` decimal(18,4) DEFAULT NULL COMMENT ''产品价合计'' AFTER `payable_total`, ',
|
||||
'ADD COLUMN `redline_amount` decimal(18,4) DEFAULT NULL COMMENT ''红线价合计'' AFTER `product_amount`, ',
|
||||
'ADD COLUMN `cost_amount` decimal(18,4) DEFAULT NULL COMMENT ''成本价合计(当前等于产品目录价)'' AFTER `redline_amount`, ',
|
||||
'ADD COLUMN `pay_total` decimal(18,4) DEFAULT NULL COMMENT ''应付合计(当前等于成本价)'' AFTER `cost_amount`'
|
||||
),
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -1,98 +0,0 @@
|
||||
-- Product base price version: table + bms_product_country.ppv_id
|
||||
-- Run once on existing DB. New installs: see bms_init.sql
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `bms_product_price_version` (
|
||||
`ppv_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '产品基础价格版本ID',
|
||||
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品代码',
|
||||
`product_id` bigint(20) DEFAULT NULL COMMENT '对应 bms_product.product_id(该版本产品行)',
|
||||
`version_no` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '版本号 V1/V2',
|
||||
`version_seq` int(11) NOT NULL COMMENT '版本序号,用于自动+1',
|
||||
`effective_date` date NOT NULL COMMENT '生效日期',
|
||||
`expire_date` date DEFAULT NULL COMMENT '失效日期(空=长期;下一版生效日=本版失效日)',
|
||||
`status` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '0待生效 1已生效 2已失效',
|
||||
`created_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建人',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`updated_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`ppv_id`),
|
||||
UNIQUE KEY `uk_ppv_code_seq` (`product_code`,`version_seq`),
|
||||
UNIQUE KEY `uk_ppv_code_eff` (`product_code`,`effective_date`),
|
||||
KEY `idx_ppv_code_status` (`product_code`,`status`),
|
||||
KEY `idx_ppv_product_id` (`product_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品基础价格版本';
|
||||
|
||||
SET @col_exists := (
|
||||
SELECT COUNT(1) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'bms_product_country'
|
||||
AND COLUMN_NAME = 'ppv_id'
|
||||
);
|
||||
SET @sql := IF(@col_exists = 0,
|
||||
'ALTER TABLE `bms_product_country` ADD COLUMN `ppv_id` bigint(20) DEFAULT NULL COMMENT ''产品基础价格版本ID bms_product_price_version.ppv_id'' AFTER `product_id`, ADD KEY `idx_product_country_ppv` (`ppv_id`)',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
INSERT INTO `bms_product_price_version` (
|
||||
product_code, product_id, version_no, version_seq, effective_date, expire_date, status, created_by, create_time
|
||||
)
|
||||
SELECT
|
||||
t.product_code,
|
||||
(
|
||||
SELECT p.product_id FROM bms_product p
|
||||
WHERE p.product_code = t.product_code
|
||||
AND p.effective_date = t.effective_date
|
||||
ORDER BY p.product_id ASC
|
||||
LIMIT 1
|
||||
) AS product_id,
|
||||
CONCAT('V', t.version_seq) AS version_no,
|
||||
t.version_seq,
|
||||
t.effective_date,
|
||||
t.expire_date,
|
||||
CASE
|
||||
WHEN t.expire_date IS NOT NULL AND t.expire_date <= CURDATE() THEN '2'
|
||||
WHEN t.effective_date > CURDATE() THEN '0'
|
||||
ELSE '1'
|
||||
END AS status,
|
||||
'migrate' AS created_by,
|
||||
NOW() AS create_time
|
||||
FROM (
|
||||
SELECT
|
||||
g.product_code,
|
||||
g.effective_date,
|
||||
g.expire_date,
|
||||
(
|
||||
SELECT COUNT(1)
|
||||
FROM (
|
||||
SELECT product_code, effective_date
|
||||
FROM bms_product_country
|
||||
WHERE effective_date IS NOT NULL
|
||||
GROUP BY product_code, effective_date
|
||||
) earlier
|
||||
WHERE earlier.product_code = g.product_code
|
||||
AND earlier.effective_date <= g.effective_date
|
||||
) AS version_seq
|
||||
FROM (
|
||||
SELECT
|
||||
product_code,
|
||||
effective_date,
|
||||
MAX(expire_date) AS expire_date
|
||||
FROM bms_product_country
|
||||
WHERE effective_date IS NOT NULL
|
||||
GROUP BY product_code, effective_date
|
||||
) g
|
||||
) t
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM bms_product_price_version v
|
||||
WHERE v.product_code = t.product_code
|
||||
AND v.effective_date = t.effective_date
|
||||
);
|
||||
|
||||
UPDATE bms_product_country c
|
||||
INNER JOIN bms_product_price_version v
|
||||
ON v.product_code = c.product_code
|
||||
AND v.effective_date = c.effective_date
|
||||
SET c.ppv_id = v.ppv_id
|
||||
WHERE c.ppv_id IS NULL
|
||||
AND c.effective_date IS NOT NULL;
|
||||
@@ -0,0 +1,91 @@
|
||||
-- Rename product tables (drop bms_ prefix) and remove base price version
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 1) Drop FK from country -> product if present
|
||||
SET @fk := (
|
||||
SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'bms_product_country'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
AND CONSTRAINT_NAME = 'fk_product_country_pid'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@fk IS NULL, 'SELECT 1', CONCAT('ALTER TABLE bms_product_country DROP FOREIGN KEY ', @fk));
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 2) Drop version index / column on country
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'bms_product_country'
|
||||
AND INDEX_NAME = 'idx_product_country_ppv'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE bms_product_country DROP INDEX idx_product_country_ppv');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @col := (
|
||||
SELECT COLUMN_NAME FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'bms_product_country'
|
||||
AND COLUMN_NAME = 'ppv_id'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@col IS NULL, 'SELECT 1', 'ALTER TABLE bms_product_country DROP COLUMN ppv_id');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- Also handle already-renamed country table
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'product_country'
|
||||
AND INDEX_NAME = 'idx_product_country_ppv'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE product_country DROP INDEX idx_product_country_ppv');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @col := (
|
||||
SELECT COLUMN_NAME FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'product_country'
|
||||
AND COLUMN_NAME = 'ppv_id'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@col IS NULL, 'SELECT 1', 'ALTER TABLE product_country DROP COLUMN ppv_id');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3) Drop version table
|
||||
DROP TABLE IF EXISTS bms_product_price_version;
|
||||
DROP TABLE IF EXISTS product_price_version;
|
||||
|
||||
-- 4) Rename tables (skip if already renamed)
|
||||
SET @t := (
|
||||
SELECT TABLE_NAME FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bms_product' LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@t IS NULL, 'SELECT 1', 'RENAME TABLE bms_product TO product');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @t := (
|
||||
SELECT TABLE_NAME FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bms_product_country' LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@t IS NULL, 'SELECT 1', 'RENAME TABLE bms_product_country TO product_country');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 5) Recreate FK product_country.product_id -> product.product_id
|
||||
SET @fk := (
|
||||
SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'product_country'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
AND CONSTRAINT_NAME = 'fk_product_country_pid'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(
|
||||
@fk IS NOT NULL,
|
||||
'SELECT 1',
|
||||
'ALTER TABLE product_country ADD CONSTRAINT fk_product_country_pid FOREIGN KEY (product_id) REFERENCES product (product_id) ON DELETE CASCADE'
|
||||
);
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
Reference in New Issue
Block a user