BEGIN;

-- 在同一事务取得排他锁后检查并删除，避免检查与删表之间写入新预占事实。
DO $$
BEGIN
    IF to_regclass('tb_agent_wallet_reservation') IS NULL THEN
        RETURN;
    END IF;

    LOCK TABLE tb_agent_wallet_reservation IN ACCESS EXCLUSIVE MODE;
    IF EXISTS (SELECT 1 FROM tb_agent_wallet_reservation LIMIT 1) THEN
        RAISE EXCEPTION 'tb_agent_wallet_reservation 已存在代理主钱包预占事实，禁止删表回滚，请停止生产者后向前修复';
    END IF;

    DROP TABLE tb_agent_wallet_reservation;
END
$$;

COMMIT;
