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( ".." );
}
自動コミット機能に独自の便利な作業をさせる代わりに。
注: 私が書いているアプリケーションは、一度に 1 つのクエリのみを実行するように設定されています。変更される 2 つのクエリを確認する必要がある状況 (一部の (ほとんどの) 銀行やその他の金融アプリケーションのように) はありません。データ、成功。
これは主に、そのようなものを制御したいという願望から生まれています (そして、自動コミット機能には特定の欠如があります)。