96 lines
3.3 KiB
SQL
96 lines
3.3 KiB
SQL
-- 应收账单来源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;
|