在程序中如何知道我是否处于交易中

问题描述 投票:0回答:1

在 Informix 中,从过程中,我如何知道调用者是否从事务中调用我。

transactions informix
1个回答
1
投票

没有任何特别简单的方法可以做到这一点。 本质上,您必须尝试启动交易并查看是否出现错误。

例如,这个存储过程确定事务状态。 请记住,Informix 支持事务不可用的无日志数据库。

CREATE PROCEDURE tx_state() RETURNING VARCHAR(14);
    DEFINE errcode INTEGER;
    ON EXCEPTION IN (-256, -535) SET errcode
        IF errcode = -256 THEN
            RETURN "TX-Unavailable";
        ELIF errcode = -535 THEN
            RETURN "In-TX";
        END IF;
    END EXCEPTION
    BEGIN WORK;
    ROLLBACK WORK;
    RETURN "No-TX";
END PROCEDURE;

如果您处于事务内部并且想要进行更改,但可以选择仅回滚更改,则可以使用 SAVEPOINT,然后 release 它,或 rollback 到保存点。

© www.soinside.com 2019 - 2024. All rights reserved.