PHP 大会日本 2024

事务的 API 支持

MySQL 服务器根据使用的存储引擎支持事务。从 MySQL 5.5 开始,默认存储引擎为 InnoDB。InnoDB 具有完整的 ACID 事务支持。

事务可以使用 SQL 或 API 调用进行控制。建议使用 API 调用来启用和禁用 autocommit 模式以及提交和回滚事务。

示例 #1 使用 SQL 和 API 设置 autocommit 模式

<?php
mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");

/* 建议:使用 API 控制事务设置 */
$mysqli->autocommit(false);

/* 不会被复制和负载均衡插件监控和识别 */
$mysqli->query('SET AUTOCOMMIT = 0');

可选功能包(例如复制和负载均衡插件)可以轻松监控 API 调用。如果使用 API 调用控制事务,则复制插件提供事务感知负载均衡。如果使用 SQL 语句设置 autocommit 模式、提交或回滚事务,则事务感知负载均衡不可用。

示例 #2 提交和回滚

<?php
mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->autocommit(false);

$mysqli->query("INSERT INTO test(id) VALUES (1)");
$mysqli->rollback();

$mysqli->query("INSERT INTO test(id) VALUES (2)");
$mysqli->commit();

请注意,MySQL 服务器无法回滚所有语句。某些语句会导致隐式提交。

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top