2011-03-16 37 views
0

在MySQL中使用事務的想法很好。如果出現問題,能夠回滾事務的想法也很好。PHP和MySQL:自己運行事務嗎?

我的問題是這樣的:在一個應用程序,它是值得它來控制自己的交易,或讓MySQL的照顧它給我嗎?換句話說,應該對MySQL給我的自動提交功能有一個主動的不信任?

例子:

try 
{ 
    $mysqli->autocommit(0); 
    //Normally, would go through the steps of prepping and executing etc, 
    //but I'll use this for brevity. 
    if(!$mysqli->query("..")) 
     throw new Exception(".."); 
    $mysqli->commit() 
} 
catch(Exception $e) 
{ 
    $mysqli->rollback(); //Doing this so I make sure I get my rollback 
    error_log(".."); 
} 

,而不是讓自動提交功能做自己的工作得心應手。

注:我在寫僅設置爲同時運行一個查詢的應用程序,不會有任何的情況下(如在一些(大部分)銀行等金融應用程序)在那裏,我需要確保兩個查詢改變數據,成功。

這主要體現出這種想來控制這種東西(在自動提交功能有一定lacktherof)。

+0

問:你想要什麼來實現呢? – middus 2011-03-17 00:01:20

回答

2

正如經常出現的答案是:這取決於。如果你想確保

update(x); 
update(y); 

是原子,即兩個更新或者沒有被執行,那麼您應關閉自動提交。如果您只做一個查詢,則不需要自己控制事務。如果你唯一的交易失敗了,那麼沒有東西可以回滾,對吧?

相關提示:你可能想了解交易的ACID properties