🚚 重命名应收账单明细导出记录表

This commit is contained in:
caojia
2026-10-18 22:41:31 +08:00
parent 3cf85af180
commit a48b40c649
5 changed files with 118 additions and 14 deletions
@@ -0,0 +1,104 @@
-- 应收账单行级“导出明细”任务与文件元数据表改名,保留既有数据。
-- 脚本可重复执行;若新旧表同时存在,请先核对数据再手动合并,避免覆盖任一表。
SET @old_table_exists := (
SELECT COUNT(1) FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_export'
);
SET @new_table_exists := (
SELECT COUNT(1) FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
);
SET @sql := IF(@old_table_exists > 0 AND @new_table_exists = 0,
'RENAME TABLE `ar_bill_export` TO `ar_bill_detail_export`',
'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 索引随表名统一;旧索引不存在或新索引已经存在时跳过。
SET @old_index_exists := (
SELECT COUNT(1) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
AND INDEX_NAME = 'idx_ar_bill_export_bill'
);
SET @new_index_exists := (
SELECT COUNT(1) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
AND INDEX_NAME = 'idx_ar_bill_detail_export_bill'
);
SET @sql := IF(@old_index_exists > 0 AND @new_index_exists = 0,
'ALTER TABLE `ar_bill_detail_export` RENAME INDEX `idx_ar_bill_export_bill` TO `idx_ar_bill_detail_export_bill`',
'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @old_index_exists := (
SELECT COUNT(1) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
AND INDEX_NAME = 'idx_ar_bill_export_status'
);
SET @new_index_exists := (
SELECT COUNT(1) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
AND INDEX_NAME = 'idx_ar_bill_detail_export_status'
);
SET @sql := IF(@old_index_exists > 0 AND @new_index_exists = 0,
'ALTER TABLE `ar_bill_detail_export` RENAME INDEX `idx_ar_bill_export_status` TO `idx_ar_bill_detail_export_status`',
'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @old_index_exists := (
SELECT COUNT(1) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
AND INDEX_NAME = 'idx_ar_bill_export_template'
);
SET @new_index_exists := (
SELECT COUNT(1) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
AND INDEX_NAME = 'idx_ar_bill_detail_export_template'
);
SET @sql := IF(@old_index_exists > 0 AND @new_index_exists = 0,
'ALTER TABLE `ar_bill_detail_export` RENAME INDEX `idx_ar_bill_export_template` TO `idx_ar_bill_detail_export_template`',
'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- MySQL 没有外键重命名语法,通过同一 ALTER TABLE 替换约束名。
SET @old_constraint_exists := (
SELECT COUNT(1) FROM information_schema.TABLE_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
AND CONSTRAINT_NAME = 'fk_ar_bill_export_bill'
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
);
SET @new_constraint_exists := (
SELECT COUNT(1) FROM information_schema.TABLE_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = DATABASE()
AND TABLE_NAME = 'ar_bill_detail_export'
AND CONSTRAINT_NAME = 'fk_ar_bill_detail_export_bill'
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
);
SET @sql := IF(@old_constraint_exists > 0 AND @new_constraint_exists = 0,
'ALTER TABLE `ar_bill_detail_export` DROP FOREIGN KEY `fk_ar_bill_export_bill`, ADD CONSTRAINT `fk_ar_bill_detail_export_bill` FOREIGN KEY (`ar_bill_id`) REFERENCES `ar_bill` (`ar_bill_id`)',
'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
+7 -7
View File
@@ -172,9 +172,9 @@ CREATE TABLE `ar_bill_detail_fee` (
) ENGINE=InnoDB AUTO_INCREMENT=151 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应收账单费用快照';
-- ----------------------------
-- 表结构:`ar_bill_export`
-- 表结构:`ar_bill_detail_export`
-- ----------------------------
CREATE TABLE `ar_bill_export` (
CREATE TABLE `ar_bill_detail_export` (
`export_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '导出ID',
`ar_bill_id` bigint(20) NOT NULL COMMENT '应收账单ID',
`file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '下载展示名称',
@@ -194,11 +194,11 @@ CREATE TABLE `ar_bill_export` (
`export_time` datetime NOT NULL COMMENT '导出时间',
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '失败原因或备注',
PRIMARY KEY (`export_id`),
KEY `idx_ar_bill_export_bill` (`ar_bill_id`,`export_time`),
KEY `idx_ar_bill_export_status` (`export_status`),
KEY `idx_ar_bill_export_template` (`template_id`),
CONSTRAINT `fk_ar_bill_export_bill` FOREIGN KEY (`ar_bill_id`) REFERENCES `ar_bill` (`ar_bill_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应收账单导出文件元数据';
KEY `idx_ar_bill_detail_export_bill` (`ar_bill_id`,`export_time`),
KEY `idx_ar_bill_detail_export_status` (`export_status`),
KEY `idx_ar_bill_detail_export_template` (`template_id`),
CONSTRAINT `fk_ar_bill_detail_export_bill` FOREIGN KEY (`ar_bill_id`) REFERENCES `ar_bill` (`ar_bill_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应收账单明细导出任务和文件元数据';
-- ----------------------------
-- 表结构:`ar_bill_generate_task`