Ver código fonte

fix(sql): 升级补丁改为幂等版本(重复执行不再报 Duplicate column)

yangjingjing 1 semana atrás
pai
commit
7784e8e363
1 arquivos alterados com 25 adições e 12 exclusões
  1. 25 12
      sql/risk_control_platform.sql

+ 25 - 12
sql/risk_control_platform.sql

@@ -3880,18 +3880,31 @@ UNLOCK TABLES;
 
 -- ============================================================
 -- 风控品控移动端 巡检打卡 字段升级补丁 (v1.0.1)
--- 适用:已部署 1.0.0 的库增量升级
+-- 适用:已部署 1.0.0 的库增量升级(完整脚本已含新字段的可跳过)
 -- 日期:2026-06-21
+-- 特性: 幂等 — 重复执行不会因 Duplicate column 报错
 -- ============================================================
 
--- 1. 巡检任务表:新增二维码内容字段(扫码打卡校验)
-ALTER TABLE `risk_inspection_task`
-  ADD COLUMN `qr_code` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL
-  COMMENT '巡检点二维码内容(扫码打卡校验用)'
-  AFTER `check_method`;
-
--- 2. 巡检记录表:新增打卡结果字段(正常/异常)
-ALTER TABLE `risk_inspection_record`
-  ADD COLUMN `result` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL
-  COMMENT '打卡结果(0正常 1异常)'
-  AFTER `record_status`;
+-- 1. 巡检任务表:新增二维码内容字段(扫码打卡校验)
+SET @col_exists := (
+  SELECT COUNT(*) FROM information_schema.COLUMNS
+  WHERE TABLE_SCHEMA = DATABASE()
+    AND TABLE_NAME   = 'risk_inspection_task'
+    AND COLUMN_NAME  = 'qr_code'
+);
+SET @sql := IF(@col_exists = 0,
+  'ALTER TABLE `risk_inspection_task` ADD COLUMN `qr_code` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''巡检点二维码内容(扫码打卡校验用)'' AFTER `check_method`',
+  'SELECT 1');
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
+
+-- 2. 巡检记录表:新增打卡结果字段(正常/异常)
+SET @col_exists := (
+  SELECT COUNT(*) FROM information_schema.COLUMNS
+  WHERE TABLE_SCHEMA = DATABASE()
+    AND TABLE_NAME   = 'risk_inspection_record'
+    AND COLUMN_NAME  = 'result'
+);
+SET @sql := IF(@col_exists = 0,
+  'ALTER TABLE `risk_inspection_record` ADD COLUMN `result` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''打卡结果(0正常 1异常)'' AFTER `record_status`',
+  'SELECT 1');
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;