应收账单调整优化
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
-- 应收账单来源ID字段命名迁移
|
||||
--
|
||||
-- 将历史字段名迁移为与当前来源表一致的名称:
|
||||
-- ar_bill_detail.prc_bill_id -> prc_order_bill_id
|
||||
-- ar_bill_detail_fee.prc_fee_id -> prc_income_bill_fee_id
|
||||
-- 脚本可重复执行,已完成迁移的字段和索引会自动跳过。
|
||||
SET NAMES utf8mb4;
|
||||
SET @db_name := DATABASE();
|
||||
|
||||
-- 1. 应收账单订单明细:来源计费订单ID。
|
||||
SET @has_old_detail_column := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @db_name
|
||||
AND TABLE_NAME = 'ar_bill_detail'
|
||||
AND COLUMN_NAME = 'prc_bill_id'
|
||||
);
|
||||
SET @has_new_detail_column := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @db_name
|
||||
AND TABLE_NAME = 'ar_bill_detail'
|
||||
AND COLUMN_NAME = 'prc_order_bill_id'
|
||||
);
|
||||
SET @sql := IF(@has_old_detail_column > 0 AND @has_new_detail_column = 0,
|
||||
'ALTER TABLE ar_bill_detail CHANGE COLUMN prc_bill_id prc_order_bill_id VARCHAR(36) NOT NULL COMMENT ''来源计费订单ID,对应 prc_order_bill.bill_id''',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 2. 应收账单费用明细:来源收入费用ID。
|
||||
SET @has_old_fee_column := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @db_name
|
||||
AND TABLE_NAME = 'ar_bill_detail_fee'
|
||||
AND COLUMN_NAME = 'prc_fee_id'
|
||||
);
|
||||
SET @has_new_fee_column := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @db_name
|
||||
AND TABLE_NAME = 'ar_bill_detail_fee'
|
||||
AND COLUMN_NAME = 'prc_income_bill_fee_id'
|
||||
);
|
||||
SET @sql := IF(@has_old_fee_column > 0 AND @has_new_fee_column = 0,
|
||||
'ALTER TABLE ar_bill_detail_fee CHANGE COLUMN prc_fee_id prc_income_bill_fee_id VARCHAR(36) NOT NULL COMMENT ''来源收入费用ID,对应 prc_income_bill_fee.fee_id''',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3. 费用明细索引同步改名,避免数据库中继续保留旧字段命名。
|
||||
SET @has_old_fee_unique := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @db_name
|
||||
AND TABLE_NAME = 'ar_bill_detail_fee'
|
||||
AND INDEX_NAME = 'uk_ar_detail_prc_fee'
|
||||
);
|
||||
SET @has_new_fee_unique := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @db_name
|
||||
AND TABLE_NAME = 'ar_bill_detail_fee'
|
||||
AND INDEX_NAME = 'uk_ar_detail_prc_income_fee'
|
||||
);
|
||||
SET @sql := IF(@has_old_fee_unique > 0 AND @has_new_fee_unique = 0,
|
||||
'ALTER TABLE ar_bill_detail_fee RENAME INDEX uk_ar_detail_prc_fee TO uk_ar_detail_prc_income_fee',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @has_old_fee_index := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @db_name
|
||||
AND TABLE_NAME = 'ar_bill_detail_fee'
|
||||
AND INDEX_NAME = 'idx_ar_detail_prc_fee'
|
||||
);
|
||||
SET @has_new_fee_index := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @db_name
|
||||
AND TABLE_NAME = 'ar_bill_detail_fee'
|
||||
AND INDEX_NAME = 'idx_ar_detail_prc_income_fee'
|
||||
);
|
||||
SET @sql := IF(@has_old_fee_index > 0 AND @has_new_fee_index = 0,
|
||||
'ALTER TABLE ar_bill_detail_fee RENAME INDEX idx_ar_detail_prc_fee TO idx_ar_detail_prc_income_fee',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
Reference in New Issue
Block a user