-- 回滚资产钱包自动续费尝试记录表,与 up 严格成对。 -- 删除顺序与 up 的创建顺序严格倒序:先删索引与唯一键,再删表(表内 CHECK 约束随表一并移除, -- 不留残余约束与索引)。 -- -- 不可逆说明(ENG-MIG-001 例外条件):本迁移的 down 会删除 tb_asset_auto_renewal_attempt 与 -- 其中的每日尝试、资金扣款、续费订单与复机结果快照。已发生的续费事实仍可通过 tb_order、 -- tb_payment、tb_asset_wallet_transaction、tb_package_usage 与 tb_audit_event 复核, -- 但「该资产当日是否已尝试/被跳过/复机结果」无法由数据库自身重建, -- 因此 down 只在上述尝试事实已无留存需求时执行。 -- -- 守卫:存在仍处于处理中(占位后未收敛)的尝试行时直接阻断回滚,避免在未收敛状态下删除记录, -- 使次日扫描无法把中断的尝试收敛为终态。 DO $$ BEGIN IF EXISTS (SELECT 1 FROM tb_asset_auto_renewal_attempt WHERE deleted_at IS NULL AND status = 1 LIMIT 1) THEN RAISE EXCEPTION '存在仍处于处理中的自动续费尝试记录,拒绝回滚以避免丢失未收敛的尝试事实'; END IF; END $$; LOCK TABLE tb_asset_auto_renewal_attempt IN ACCESS EXCLUSIVE MODE; DROP INDEX IF EXISTS idx_asset_auto_renewal_attempt_asset; DROP INDEX IF EXISTS idx_asset_auto_renewal_attempt_resume_unresolved; DROP INDEX IF EXISTS idx_asset_auto_renewal_attempt_unfinished; DROP INDEX IF EXISTS uq_asset_auto_renewal_attempt_key; DROP TABLE IF EXISTS tb_asset_auto_renewal_attempt;