[英]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.