Current Location: Home> Latest Articles>

M66 2025-06-23

mysqli::savepoint

适用 PHP 版本

PHP 8.1.0 及以上版本

函数说明

mysqli::savepoint 用于在当前数据库事务中创建一个保存点(Savepoint)。保存点允许在事务中设置一个标记点,之后可以选择性地回滚到该点,而不是回滚整个事务,从而实现更细粒度的事务控制。

函数语法

public mysqli::savepoint(string $name): bool

参数

  • name — 保存点的名称,必须是一个合法的字符串,用于标识该保存点。

返回值

如果保存点设置成功,返回 true,否则返回 false

示例

下面的示例演示如何使用 mysqli::savepoint 在事务中创建保存点,并在出错时回滚到保存点。

示例代码

示例代码说明:本例连接数据库,开启事务,设置一个保存点,然后执行两条 SQL 语句。如果第二条语句执行失败,则回滚到保存点而不是整个事务,最后提交事务。

$mysqli = new mysqli("localhost", "user", "password", "database");

$mysqli->begin_transaction();

$mysqli->savepoint("SP1");

$result1 = $mysqli->query("INSERT INTO test_table (name) VALUES ('First')");
$result2 = $mysqli->query("INSERT INTO test_table (name) VALUES ('Second')");

if (!$result2) {
    // 回滚到保存点 SP1
    $mysqli->rollback_to_savepoint("SP1");
}

$mysqli->commit();

$mysqli->close();