-- 回滚运营商通道流量阈值停机:删除周期阈值停机锁表与 tb_carrier 的阈值三列,与 up 严格成对。 -- 先删锁表索引与锁表,再删除 tb_carrier 的三个阈值列,顺序与 up 的创建顺序严格倒序。 -- -- 不可逆说明(ENG-MIG-001 例外条件):本迁移的 down 会删除 tb_carrier_traffic_threshold_lock 与 -- tb_carrier 的 traffic_threshold_enabled/traffic_threshold_value/traffic_threshold_unit 三列。 -- 已触发的阈值停机事实(锁行)与运营商阈值配置都无法由数据库自身重建,只能依据 -- tb_audit_event 中 carrier_create/carrier_update 的前后值快照与 Integration Log 人工复核, -- 因此 down 只在上述事实已无留存需求时执行。 -- -- 守卫一:锁表存在任何未软删行时直接阻断回滚,避免静默丢失阈值停机/复机事实与恢复扫描状态。 -- 守卫二:存在任一已配置阈值(启用或已填数值)的运营商时直接阻断回滚,避免静默丢失阈值配置。 DO $$ BEGIN IF EXISTS (SELECT 1 FROM tb_carrier_traffic_threshold_lock WHERE deleted_at IS NULL LIMIT 1) THEN RAISE EXCEPTION '存在通道流量阈值周期锁事实,拒绝回滚以避免丢失停机/复机事实与恢复扫描状态'; END IF; END $$; DO $$ BEGIN IF EXISTS (SELECT 1 FROM tb_carrier WHERE traffic_threshold_enabled = 1 OR traffic_threshold_value IS NOT NULL LIMIT 1) THEN RAISE EXCEPTION '存在已配置通道流量阈值的运营商,拒绝回滚以避免丢失阈值配置'; END IF; END $$; DROP INDEX IF EXISTS idx_carrier_traffic_threshold_lock_unresolved; DROP INDEX IF EXISTS idx_carrier_traffic_threshold_lock_card; DROP INDEX IF EXISTS idx_carrier_traffic_threshold_lock_status_period; DROP TABLE IF EXISTS tb_carrier_traffic_threshold_lock; ALTER TABLE tb_carrier DROP COLUMN IF EXISTS traffic_threshold_enabled, DROP COLUMN IF EXISTS traffic_threshold_value, DROP COLUMN IF EXISTS traffic_threshold_unit;