繁体   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