簡體   English   中英

PHP和MySQL:自己運行事務?

[英]PHP and MySQL: Running transactions yourself?

在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( ".." );
}

而不是讓自動提交功能做它自己的方便工作。

注意:我正在編寫的應用程序只設置為一次運行一個查詢,沒有任何情況(如某些(大多數)銀行和其他財務應用程序)我需要確保兩個查詢更改數據,成功。

這主要是出於想要控制那種東西(以及自動提交功能中的某些缺點)。

通常答案是:它取決於。 如果你想確保這一點

update(x);
update(y);

是原子的,即無論是更新還是不執行,都應該關閉自動提交。 如果您只進行一次查詢,則無需自行控制事務。 如果您的唯一交易失敗,那么將無法回滾,對吧?

在相關說明中:您可能想要了解事務的ACID屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM