From 7ef3b95aabedb116b30ca47ac09b124fa22f3440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Wed, 28 Oct 2026 09:47:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=A2=84=E7=BB=93=E7=AE=97=E9=A2=84?= =?UTF-8?q?=E4=BB=98=E5=8F=B0=E8=B4=A6=E5=94=AF=E4=B8=80=E9=94=AE=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E9=A2=84=E7=BB=93=E7=AE=97=E5=8D=95id=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=98=E6=AC=BE=E7=94=B3=E8=AF=B7=E5=A4=9A?= =?UTF-8?q?=E9=80=89=E9=A2=84=E7=BB=93=E7=AE=97=E5=8D=95=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E9=94=AE=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ade_pre_settlement_advance_uk_20261028.sql | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/sql/transport/blade_pre_settlement_advance_uk_20261028.sql diff --git a/doc/sql/transport/blade_pre_settlement_advance_uk_20261028.sql b/doc/sql/transport/blade_pre_settlement_advance_uk_20261028.sql new file mode 100644 index 00000000..e8e6fdae --- /dev/null +++ b/doc/sql/transport/blade_pre_settlement_advance_uk_20261028.sql @@ -0,0 +1,33 @@ +-- 预结算预付记录表:唯一键调整(支持付款申请多选预结算单,每张预结算单各建一条台账) +-- 原唯一键 uk_pre_settlement_advance_no(tenant_id, advance_no) 与多选预结算单联动建档冲突: +-- 同一付款申请为多张预结算单建档时 advance_no 相同,第二条插入报 Duplicate entry。 +-- 调整为 uk_pre_settlement_advance_no(tenant_id, pre_settlement_id, advance_no)。 +-- 幂等脚本,可重复执行:旧键存在且不含 pre_settlement_id 才删,目标键不存在才加。 +SELECT IF( + EXISTS(SELECT 1 FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'blade_pre_settlement_advance' + AND index_name = 'uk_pre_settlement_advance_no') + AND NOT EXISTS(SELECT 1 FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'blade_pre_settlement_advance' + AND index_name = 'uk_pre_settlement_advance_no' + AND column_name = 'pre_settlement_id'), + 'ALTER TABLE `blade_pre_settlement_advance` DROP INDEX `uk_pre_settlement_advance_no`', + 'DO 0' +) INTO @drop_sql; +PREPARE stmt FROM @drop_sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SELECT IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'blade_pre_settlement_advance' + AND index_name = 'uk_pre_settlement_advance_no'), + 'ALTER TABLE `blade_pre_settlement_advance` ADD UNIQUE KEY `uk_pre_settlement_advance_no` (`tenant_id`, `pre_settlement_id`, `advance_no`) USING BTREE', + 'DO 0' +) INTO @add_sql; +PREPARE stmt FROM @add_sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt;