119 lines
4.5 KiB
SQL
119 lines
4.5 KiB
SQL
-- 9610 单号命名对齐运单 t_order(幂等)
|
||
-- ReferenceNo → ClientNo(客户单号)
|
||
-- LogisticsNo 并入 ServiceNo(运单号)后删除 LogisticsNo
|
||
|
||
SET @db := DATABASE();
|
||
|
||
-- 1) ReferenceNo → ClientNo
|
||
SET @hasRef := (
|
||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND COLUMN_NAME='ReferenceNo'
|
||
);
|
||
SET @hasClient := (
|
||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND COLUMN_NAME='ClientNo'
|
||
);
|
||
SET @sql := IF(
|
||
@hasRef > 0 AND @hasClient = 0,
|
||
'ALTER TABLE `t_9610_order` CHANGE COLUMN `ReferenceNo` `ClientNo` VARCHAR(48) NOT NULL DEFAULT '''' COMMENT ''客户单号(对齐 t_order.ClientNo / 上游 referenceNo)''',
|
||
'SELECT ''skip ReferenceNo->ClientNo'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
-- 索引名顺带调整(旧 idx_9610_ref → idx_9610_client_no)
|
||
SET @idxRef := (
|
||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND INDEX_NAME='idx_9610_ref'
|
||
);
|
||
SET @idxClient := (
|
||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND INDEX_NAME='idx_9610_client_no'
|
||
);
|
||
SET @sql := IF(
|
||
@idxRef > 0 AND @idxClient = 0,
|
||
'ALTER TABLE `t_9610_order` RENAME INDEX `idx_9610_ref` TO `idx_9610_client_no`',
|
||
'SELECT ''skip rename idx_9610_ref'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
SET @idxClient := (
|
||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND INDEX_NAME='idx_9610_client_no'
|
||
);
|
||
SET @sql := IF(
|
||
@idxClient = 0,
|
||
'ALTER TABLE `t_9610_order` ADD KEY `idx_9610_client_no` (`ClientNo`)',
|
||
'SELECT ''skip add idx_9610_client_no'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
-- 2) LogisticsNo → 回填 ServiceNo,再删列
|
||
SET @hasLog := (
|
||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND COLUMN_NAME='LogisticsNo'
|
||
);
|
||
SET @sql := IF(
|
||
@hasLog > 0,
|
||
'UPDATE `t_9610_order` SET `ServiceNo` = NULLIF(TRIM(`LogisticsNo`), '''') WHERE (`ServiceNo` IS NULL OR TRIM(`ServiceNo`) = '''') AND `LogisticsNo` IS NOT NULL AND TRIM(`LogisticsNo`) <> ''''',
|
||
'SELECT ''skip backfill ServiceNo'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
SET @idxLog := (
|
||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND INDEX_NAME='idx_9610_logistics'
|
||
);
|
||
SET @sql := IF(
|
||
@idxLog > 0,
|
||
'ALTER TABLE `t_9610_order` DROP INDEX `idx_9610_logistics`',
|
||
'SELECT ''skip drop idx_9610_logistics'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
SET @hasLog := (
|
||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND COLUMN_NAME='LogisticsNo'
|
||
);
|
||
SET @sql := IF(
|
||
@hasLog > 0,
|
||
'ALTER TABLE `t_9610_order` DROP COLUMN `LogisticsNo`',
|
||
'SELECT ''skip drop LogisticsNo'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
-- ServiceNo 索引(检索)
|
||
SET @idxSvc := (
|
||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND INDEX_NAME='idx_9610_service_no'
|
||
);
|
||
SET @sql := IF(
|
||
@idxSvc = 0,
|
||
'ALTER TABLE `t_9610_order` ADD KEY `idx_9610_service_no` (`ServiceNo`)',
|
||
'SELECT ''skip idx_9610_service_no'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
-- OrderNo 注释对齐:海关下游订单编号(非运单 DownstreamServiceNo)
|
||
SET @hasOrderNo := (
|
||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND COLUMN_NAME='OrderNo'
|
||
);
|
||
SET @sql := IF(
|
||
@hasOrderNo > 0,
|
||
'ALTER TABLE `t_9610_order` MODIFY COLUMN `OrderNo` VARCHAR(32) NULL COMMENT ''海关下游订单编号(申报回写,非 t_order.DownstreamServiceNo)''',
|
||
'SELECT ''skip OrderNo comment'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
-- DownstreamRefNo 注释
|
||
SET @hasDr := (
|
||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='t_9610_order' AND COLUMN_NAME='DownstreamRefNo'
|
||
);
|
||
SET @sql := IF(
|
||
@hasDr > 0,
|
||
'ALTER TABLE `t_9610_order` MODIFY COLUMN `DownstreamRefNo` VARCHAR(32) NULL COMMENT ''申报回写的 referenceNo 快照''',
|
||
'SELECT ''skip DownstreamRefNo comment'' AS msg'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|