PHP mysqli :: autocommit VS“START TRANSACTION”

时间:2010-01-12 16:07:31

标签: php mysql transactions mysqli database-connection

在我们的数据库层对象中,我们始终使用mysqli :: query执行“START TRANSACTION”,“ROLLBACK”和“COMMIT”SQL语句来管理事务。

今天做了一些研究,我发现this mention in the MySQL Manual关于使用API​​级别调用来使用直接SQL来管理事务VS:

  

重要

     

许多用于编写MySQL的API   客户端应用程序(例如JDBC)   提供自己的启动方法   可以(有时候)的交易   应该)而不是发送一个   来自的START TRANSACTION声明   客户。请参见第20章,连接器和   API,或您的文档   API,了解更多信息。

然后,仔细观察mysqli,找到了mysqli :: autocommit,mysqli :: rollback和mysqli :: commit方法来管理事务(http://us.php.net/manual/en/class.mysqli.php)。

我的问题:使用这些mysqli等价物更好吗?为什么?我无法在任何地方找到任何说明这些函数是否或为何比其直接SQL对应程序更好的表现。

1 个答案:

答案 0 :(得分:5)

可能存在数据访问包装器在启动/结束事务时需要知道的原因。例如,在我的脑海中,连接池方案必须知道在事务中间何时完成了先前使用的连接,并且在这种情况下不将其返回到连接池以便重新使用。

我不知道mysqli中需要您使用本机方法而不是SQL版本的任何问题,但它可能在一般情况下......这就是为什么它只是“有时应该” 。在任何情况下,PHP方法都比SQL字符串版本更容易阅读,所以无论如何我都会说这个。