-- 回滚员工代收款账单闭环 Schema。 -- 任一本 Change 的业务事实或新增审批场景配置存在时均禁止破坏性回滚: -- 已产生的账单、申请、分摊、退款冲销事实无法通过重建 Schema 恢复。 DO $$ BEGIN IF EXISTS (SELECT 1 FROM tb_employee_collection_bill) OR EXISTS (SELECT 1 FROM tb_employee_collection_payment_method) OR EXISTS (SELECT 1 FROM tb_employee_collection_application) OR EXISTS (SELECT 1 FROM tb_employee_collection_application_attempt) OR EXISTS (SELECT 1 FROM tb_employee_collection_application_allocation) OR EXISTS (SELECT 1 FROM tb_employee_collection_bill_refund) THEN RAISE EXCEPTION '存在员工代收款账单业务事实,禁止回滚员工代收款账单迁移'; END IF; IF EXISTS (SELECT 1 FROM tb_wecom_approval_scene WHERE business_type = 'employee_collection_approval') THEN RAISE EXCEPTION '存在员工代收款核销审批场景配置,禁止回滚员工代收款账单迁移'; END IF; END $$; ALTER TABLE tb_wecom_approval_scene DROP CONSTRAINT IF EXISTS chk_wecom_approval_scene_business; ALTER TABLE tb_wecom_approval_scene ADD CONSTRAINT chk_wecom_approval_scene_business CHECK (business_type IN ('refund_approval', 'offline_recharge_approval')); DROP TABLE IF EXISTS tb_employee_collection_bill_refund; DROP TABLE IF EXISTS tb_employee_collection_application_allocation; DROP TABLE IF EXISTS tb_employee_collection_application_attempt; DROP TABLE IF EXISTS tb_employee_collection_application; DROP TABLE IF EXISTS tb_employee_collection_bill; DROP TABLE IF EXISTS tb_employee_collection_payment_method;