PHP mysqli :: autocommit VS“开始交易”
作者:互联网
在数据库层对象中,我们始终使用通过mysqli :: query执行的“ START TRANSACTION”,“ ROLLBACK”和“ COMMIT” SQL语句来管理事务.
今天进行了一些研究,发现this mention in the MySQL Manual关于使用API级调用来使用直接SQL管理事务VS:
Important
Many APIs used for writing MySQL
client applications (such as JDBC)
provide their own methods for starting
transactions that can (and sometimes
should) be used instead of sending a
START TRANSACTION statement from the
client. See Chapter 20, Connectors and
APIs, or the documentation for your
API, for more information.
并且,在仔细查看mysqli时,发现了用于管理事务的mysqli :: autocommit,mysqli :: rollback和mysqli :: commit方法(http://us.php.net/manual/en/class.mysqli.php).
我的问题:使用这些mysqli等效项更好,为什么?我无法在任何地方提及这些功能是否比其直接的SQL同类产品更好的原因.
解决方法:
可能有某些原因可能导致数据访问包装器需要知道何时开始/结束事务.例如,在我的脑海中,连接池方案必须知道在事务中间何时完成了先前使用的连接,并且在这种情况下不能将其返回给连接池以供重用.
我不知道mysqli中会要求您使用本机方法而不是SQL版本的任何问题,但是在一般情况下……这就是为什么它只是“有时应该”的原因.无论如何,PHP方法比SQL字符串版本更易于阅读,因此无论如何我都会说.
标签:mysqli,transactions,database-connection,mysql,php 来源: https://codeday.me/bug/20191024/1919257.html