-- 回滚运营报表日报快照三张表,与 up 严格成对。 -- 删除顺序与 up 的创建顺序严格倒序:先删索引,再按依赖无关的表逐一删除 -- (三张表之间没有外键与视图,删除顺序不产生级联影响;表内 CHECK 约束随表一并移除)。 -- -- 不可逆说明:本迁移的 down 会删除全部已生成的日报快照。 -- 快照是「截至某个上海自然日」的冻结读数,其源事实(实名状态可逆转、到期时间可被改写) -- 无法事后重算,因此 down 只在确认不需要历史报表时执行。 -- -- 守卫:存在已生成的快照行时直接阻断回滚,避免误删已经无法重建的历史报表事实。 DO $$ BEGIN IF EXISTS (SELECT 1 FROM tb_operations_report_snapshot LIMIT 1) THEN RAISE EXCEPTION '已存在运营报表日报快照,拒绝回滚以避免丢失无法重建的历史报表事实'; END IF; END $$; LOCK TABLE tb_operations_report_snapshot IN ACCESS EXCLUSIVE MODE; LOCK TABLE tb_operations_report_activation_row IN ACCESS EXCLUSIVE MODE; LOCK TABLE tb_operations_report_renewal_row IN ACCESS EXCLUSIVE MODE; DROP INDEX IF EXISTS idx_operations_report_renewal_series; DROP INDEX IF EXISTS idx_operations_report_renewal_shop; DROP INDEX IF EXISTS uk_operations_report_renewal_row; DROP TABLE IF EXISTS tb_operations_report_renewal_row; DROP INDEX IF EXISTS idx_operations_report_activation_shop; DROP INDEX IF EXISTS uk_operations_report_activation_row; DROP TABLE IF EXISTS tb_operations_report_activation_row; DROP INDEX IF EXISTS uk_operations_report_snapshot_date; DROP TABLE IF EXISTS tb_operations_report_snapshot;