feat(db): 新增Kingbase数据库V2迁移与回滚脚本
This commit is contained in:
1 parent
277c9e210e
commit
c791e23f3e
17 files changed
+3386
No files matched your search
@@ -0,0 +1,38 @@
|
||||
-- ==============================================================================
|
||||
-- RailwaySystem 数据库 V2 迁移安全门禁 A: 000_tx_capability_probe.sql
|
||||
-- 适用数据库: KingbaseES V009R003C018 (schema: public, database_mode: mysql)
|
||||
-- 执行目标: 在正式执行迁移前,实证探测当前数据库实例是否支持 DDL 事务回滚能力
|
||||
-- 约束原则:
|
||||
-- 1. 本文件为【前置能力探针】,绝不读取或修改任何 train_* 业务表与 sys_* 系统表
|
||||
-- 2. 仅在临时对象 public.__railway_v2_tx_probe 上执行可逆测试
|
||||
-- 3. 若 ROLLBACK 后探针表仍旧残留,表明 DDL 隐式自动提交,立即强行熔断后续迁移
|
||||
-- ==============================================================================
|
||||
|
||||
-- Phase A: 启动显式事务,创建并修改探针临时表,随后主动 ROLLBACK
|
||||
BEGIN;
|
||||
|
||||
CREATE TABLE public.__railway_v2_tx_probe (
|
||||
id INTEGER
|
||||
);
|
||||
|
||||
ALTER TABLE public.__railway_v2_tx_probe
|
||||
ADD COLUMN test_col INTEGER;
|
||||
|
||||
ROLLBACK;
|
||||
|
||||
-- Phase B: 只读断言验证探针表是否被完整撤销
|
||||
DO $$
|
||||
DECLARE
|
||||
v_probe_exists INT;
|
||||
BEGIN
|
||||
SELECT count(*) INTO v_probe_exists
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'public' AND table_name = '__railway_v2_tx_probe';
|
||||
|
||||
IF v_probe_exists > 0 THEN
|
||||
-- 发现探针表未被回滚,说明数据库引擎在执行 DDL 时发生了隐式提交
|
||||
RAISE EXCEPTION '>>> [Probe-FATAL] 当前 Kingbase 实例 DDL 不满足 V2 迁移事务假设 (DDL 在 ROLLBACK 后依然残留),禁止继续执行 001~010 迁移!';
|
||||
ELSE
|
||||
RAISE NOTICE '>>> [Probe-PASS] 数据库 DDL 事务原子性验证通过:Kingbase 实例支持 DDL 事务回滚,符合 V2 迁移安全前提。';
|
||||
END IF;
|
||||
END $$;
|
||||
Reference in new issue
Block a user