0

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

而不是让自动提交功能自己做方便的工作。

注意:我正在编写的应用程序仅设置为一次运行一个查询,不会有任何情况(例如在某些(大多数)银行和其他金融应用程序中)我需要确保两个查询发生变化数据,成功。

这主要是出于控制这类东西的愿望(以及自动提交功能中的某种缺乏)。

4

1 回答 1

2

答案通常是:视情况而定。如果你想确保

update(x);
update(y);

是原子的,即更新或不执行,您应该关闭自动提交。如果您只进行一项查询,则无需自己控制事务。如果您唯一的交易失败,就没有什么可以回滚的了,对吧?

在相关说明中:您可能想了解事务的ACID 属性

于 2011-03-16T23:51:10.470 回答