PHP 8.1.0 及以上版本
mysqli::savepoint 用于在当前数据库事务中创建一个保存点(Savepoint)。保存点允许在事务中设置一个标记点,之后可以选择性地回滚到该点,而不是回滚整个事务,从而实现更细粒度的事务控制。
public mysqli::savepoint(string $name): bool
如果保存点设置成功,返回 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();