このページによると: http://www.weberdev.com/ViewArticle/Using-Transactions-In-MySQL-Part-1
「...トランザクションを開始しても、COMMIT または ROLLBACK を発行する前にセッションを終了すると、MySQL は自動 COMMIT を実行せず、代わりに ROLLBACK を発行することに注意してください。」
これを確認するためにいくつかのテストを行いました。各シナリオの結果は次のとおりです。(注: ページが COMMIT なしで終了すると、mysql は自動的にロールバックします):
mysql_query("START TRANSACTION");
mysql_query("INSERT INTO log SET temp = 'test'");
exit("Exit\n"); // Auto rollback;
die( "Die\n"); // Auto rollback;
throw new Exception("Exception\n"); // Auto rollback;
try {
throw new Exception("Exception\n");
} catch(Exception $e) {
echo "Caught\n"; // Committed;
}
require_once('invalid_file.php'); // Auto rollback;
mysql_query('COMMIT');