mysqli::savepoint
(mysqli_savepoint) 명명 된 트랜잭션 저장 포인트를 설정합니다
mysqli :: savepoint ()는 트랜잭션에서 저장 포인트를 생성하는 데 사용되는 메소드입니다. SavePoint는 트랜잭션의 태그입니다. 트랜잭션의 태그는 트랜잭션 중에 언제든지 태그가있는 상태로 롤백 할 수 있습니다.
사용법 : mysqli :: savepoint (String $ savepoint_name) : bool
매개 변수 :
반품 값 :
예:
// 创建数据库连接$mysqli = new mysqli("localhost", "username", "password", "database"); // 检查连接是否成功if ($mysqli->connect_errno) { echo "连接数据库失败: " . $mysqli->connect_error; exit(); } // 开始事务$mysqli->begin_transaction(); // 执行一些数据库操作$mysqli->query("INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')"); $mysqli->query("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1"); // 创建保存点if ($mysqli->savepoint("my_savepoint")) { echo "保存点创建成功!"; // 执行更多数据库操作$mysqli->query("DELETE FROM orders WHERE user_id = 1"); $mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE user_id = 2"); // 回滚到保存点if ($mysqli->rollback_to("my_savepoint")) { echo "回滚成功!"; } else { echo "回滚失败!"; } } else { echo "保存点创建失败!"; } // 提交事务$mysqli->commit(); // 关闭数据库连接$mysqli->close();
위의 예에서 먼저 데이터베이스 연결을 작성한 다음 트랜잭션을 시작합니다. 트랜잭션에서는 일부 데이터베이스 작업을 수행하고 savepoint()
메소드를 사용하여 SavePoint를 만들었습니다. 다음으로, 우리는 다른 데이터베이스 작업을 계속 수행하고 rollback_to()
메소드를 사용하여 SavePoint가 위치한 상태로 트랜잭션을 다시 출시했습니다. 마지막으로 트랜잭션을 저지르고 데이터베이스 연결을 닫았습니다.
savepoint()
및 rollback_to()
메소드는 InnoDB와 같은 트랜잭션 지원 스토리지 엔진에서만 사용할 수 있습니다. 트랜잭션을 지원하지 않는 스토리지 엔진을 사용하는 경우 이러한 방법은 실패합니다.