处理OOP应用程序中的嵌套事务

时间:2013-11-20 16:15:46

标签: php mysql transactions

我正在考虑设计一个新的应用程序,并偶然发现了有关嵌套事务的一般性问题。我有一些我需要重用的对象。假设这个对象之一是

class A {
    public method(){
        $db->startTransaction(); // shared $db object
        // .... do a lot of SQL work
        $db->commitTransaction();
    }
}

现在假设有第二个对象B需要调用A->方法并在发生错误时全部回滚:

class B {
    public anotherMethod(){
        $db->startTransaction();
        $a = new A();
        $a->method();
        // code that throws an error
        $db->rollbackTransaction();
    }
}

处理此类情况的正确方法是什么?您有最佳实践吗?

1 个答案:

答案 0 :(得分:0)

Mysql不支持嵌套交易,但您仍然可以使用保存点