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