事务的 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