2013-11-20 62 views
1

我在考慮設計一個新的應用程序,並且偶然發現了關於嵌套事務的一般問題。我有一些需要重用的對象。假設該對象中的一個是在OOP應用程序中處理嵌套事務

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

現在假設存在需要調用A->方法和回退所有的第二對象B如果在發生錯誤:

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

什麼是正確的方式來處理這種情況?你有沒有遵循的最佳做法?

+0

,我想大家都知道,MySQL不支持嵌套事務,只是想如何處理該建議。 –

+0

是的,我知道!問題是如何在不更改舊對象的情況下處理這個問題(甚至有可能?)。 – sangaran

回答

0

Mysql的犯規支持嵌套事務,但是你仍然可以使用保存點

+0

我知道。想象一下,一個物體就像一個黑匣子。我甚至不知道它在最糟糕的情況下使用交易。你如何照顧這種情況? – sangaran

相關問題