PHP mysqli::autocommit VS “开始交易”
Posted
技术标签:
【中文标题】PHP mysqli::autocommit VS “开始交易”【英文标题】:PHP mysqli::autocommit VS "START TRANSACTION" 【发布时间】:2011-01-04 06:03:09 【问题描述】:在我们的数据库层对象中,我们总是通过 mysqli::query 执行的“START TRANSACTION”、“ROLLBACK”和“COMMIT”SQL 语句来管理事务。
今天做一些研究,我发现this mention in the MySQL Manual 关于使用 API 级别调用来管理事务 VS 使用直接 SQL:
重要
许多用于编写 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】:可能存在数据访问包装器需要知道事务何时开始/结束的原因。例如,在我的脑海中,连接池方案必须知道以前使用的连接何时在事务中间完成,并且在这种情况下不将其返回到连接池以供重用。
我不知道mysqli
中有任何问题需要您使用本机方法而不是SQL 版本,但在一般情况下可能是这样……这就是为什么它只是“有时应该”。无论如何,PHP 方法比 SQL 字符串版本更容易阅读,所以我还是说去吧。
【讨论】:
以上是关于PHP mysqli::autocommit VS “开始交易”的主要内容,如果未能解决你的问题,请参考以下文章