增加软删除
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
-- product / product_country / prc_surcharge: is_del (0 not deleted / 1 deleted)
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @col := (
|
||||
SELECT COLUMN_NAME FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'product'
|
||||
AND COLUMN_NAME = 'is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@col IS NULL,
|
||||
'ALTER TABLE product ADD COLUMN is_del char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''0'' COMMENT ''是否删除 0未删除 1已删除'' AFTER status',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'product'
|
||||
AND INDEX_NAME = 'uk_product_code_eff'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE product DROP INDEX uk_product_code_eff');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'product'
|
||||
AND INDEX_NAME = 'uk_product_code_eff_is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'ALTER TABLE product ADD UNIQUE KEY uk_product_code_eff_is_del (product_code, effective_date, is_del)', 'SELECT 1');
|
||||
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 = 'is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@col IS NULL,
|
||||
'ALTER TABLE product_country ADD COLUMN is_del char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''0'' COMMENT ''是否删除 0未删除 1已删除'' AFTER status',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'product_country'
|
||||
AND INDEX_NAME = 'uk_product_country_zone_weight_eff'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE product_country DROP INDEX uk_product_country_zone_weight_eff');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'product_country'
|
||||
AND INDEX_NAME = 'uk_product_country_zone_weight_eff_is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'ALTER TABLE product_country ADD UNIQUE KEY uk_product_country_zone_weight_eff_is_del (product_code, country_name, zone_code, weight_min, weight_max, effective_date, is_del)', 'SELECT 1');
|
||||
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 = 'prc_surcharge'
|
||||
AND COLUMN_NAME = 'is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@col IS NULL,
|
||||
'ALTER TABLE prc_surcharge ADD COLUMN is_del char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''0'' COMMENT ''是否删除 0未删除 1已删除'' AFTER ss_code',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
UPDATE product SET is_del = '0' WHERE is_del IS NULL;
|
||||
UPDATE product_country SET is_del = '0' WHERE is_del IS NULL;
|
||||
UPDATE prc_surcharge SET is_del = '0' WHERE is_del IS NULL;
|
||||
|
||||
-- redline_product / redline_product_country
|
||||
SET @col := (
|
||||
SELECT COLUMN_NAME FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'redline_product'
|
||||
AND COLUMN_NAME = 'is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@col IS NULL,
|
||||
'ALTER TABLE redline_product ADD COLUMN is_del char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''0'' COMMENT ''是否删除 0未删除 1已删除'' AFTER status',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'redline_product'
|
||||
AND INDEX_NAME = 'uk_redline_product_code_eff'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE redline_product DROP INDEX uk_redline_product_code_eff');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'redline_product'
|
||||
AND INDEX_NAME = 'uk_redline_product_code_eff_is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'ALTER TABLE redline_product ADD UNIQUE KEY uk_redline_product_code_eff_is_del (product_code, effective_date, is_del)', 'SELECT 1');
|
||||
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 = 'redline_product_country'
|
||||
AND COLUMN_NAME = 'is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@col IS NULL,
|
||||
'ALTER TABLE redline_product_country ADD COLUMN is_del char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''0'' COMMENT ''是否删除 0未删除 1已删除'' AFTER status',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'redline_product_country'
|
||||
AND INDEX_NAME = 'uk_redline_country_zone_weight_eff'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE redline_product_country DROP INDEX uk_redline_country_zone_weight_eff');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'redline_product_country'
|
||||
AND INDEX_NAME = 'uk_redline_country_zone_weight_eff_is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'ALTER TABLE redline_product_country ADD UNIQUE KEY uk_redline_country_zone_weight_eff_is_del (product_code, country_name, zone_code, weight_min, weight_max, effective_date, is_del)', 'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
UPDATE redline_product SET is_del = '0' WHERE is_del IS NULL;
|
||||
UPDATE redline_product_country SET is_del = '0' WHERE is_del IS NULL;
|
||||
|
||||
-- prc_surcharge_rel
|
||||
SET @col := (
|
||||
SELECT COLUMN_NAME FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'prc_surcharge_rel'
|
||||
AND COLUMN_NAME = 'is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@col IS NULL,
|
||||
'ALTER TABLE prc_surcharge_rel ADD COLUMN is_del char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''0'' COMMENT ''是否删除 0未删除 1已删除'' AFTER country_code',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'prc_surcharge_rel'
|
||||
AND INDEX_NAME = 'uk_rel_scope'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE prc_surcharge_rel DROP INDEX uk_rel_scope');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @idx := (
|
||||
SELECT INDEX_NAME FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'prc_surcharge_rel'
|
||||
AND INDEX_NAME = 'uk_rel_scope_is_del'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@idx IS NULL, 'ALTER TABLE prc_surcharge_rel ADD UNIQUE KEY uk_rel_scope_is_del (sc_id, product_id, detail_id, price_type, country_code, is_del)', 'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
UPDATE prc_surcharge_rel SET is_del = '0' WHERE is_del IS NULL;
|
||||
@@ -13,6 +13,7 @@ CREATE TABLE IF NOT EXISTS `redline_product` (
|
||||
`effective_date` datetime DEFAULT NULL COMMENT '目录生效时间(到小时)',
|
||||
`expire_date` datetime DEFAULT NULL COMMENT '失效时间(空=长期)',
|
||||
`status` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '0待生效 1已生效 2已失效',
|
||||
`is_del` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否删除 0未删除 1已删除',
|
||||
`source_sheet` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源Excel sheet名',
|
||||
`pef_id` bigint(20) DEFAULT NULL COMMENT '关联导入价表Excel附件 prc_price_excel_file.pef_id',
|
||||
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
@@ -22,7 +23,7 @@ CREATE TABLE IF NOT EXISTS `redline_product` (
|
||||
`updated_by` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`product_id`) USING BTREE,
|
||||
UNIQUE KEY `uk_redline_product_code_eff` (`product_code`,`effective_date`),
|
||||
UNIQUE KEY `uk_redline_product_code_eff_is_del` (`product_code`,`effective_date`,`is_del`),
|
||||
KEY `idx_redline_tax_status` (`tax_mode`,`status`) USING BTREE,
|
||||
KEY `idx_redline_product_code` (`product_code`),
|
||||
KEY `idx_redline_product_pef_id` (`pef_id`)
|
||||
@@ -47,10 +48,11 @@ CREATE TABLE IF NOT EXISTS `redline_product_country` (
|
||||
`effective_date` datetime DEFAULT NULL COMMENT '生效时间(到小时)',
|
||||
`expire_date` datetime DEFAULT NULL COMMENT '失效时间(空=开放)',
|
||||
`status` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '0待生效 1已生效 2已失效',
|
||||
`is_del` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否删除 0未删除 1已删除',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`detail_id`) USING BTREE,
|
||||
UNIQUE KEY `uk_redline_country_zone_weight_eff` (`product_code`,`country_name`,`zone_code`,`weight_min`,`weight_max`,`effective_date`),
|
||||
UNIQUE KEY `uk_redline_country_zone_weight_eff_is_del` (`product_code`,`country_name`,`zone_code`,`weight_min`,`weight_max`,`effective_date`,`is_del`),
|
||||
KEY `idx_redline_country_code` (`country_code`) USING BTREE,
|
||||
KEY `idx_redline_weight_match` (`product_code`,`country_code`,`weight_min`,`weight_max`) USING BTREE,
|
||||
KEY `idx_redline_product_eff` (`product_code`,`effective_date`,`expire_date`),
|
||||
|
||||
Reference in New Issue
Block a user