Mysqli :: SavePoint () ist eine Methode, mit der ein SavePoint in einer Transaktion erstellt wird. Ein SavePoint ist ein Tag in einer Transaktion, das in den Zustand zurückgerollt werden kann, in dem sich das Tag jederzeit während der Transaktion befindet.
Verwendung: MySQLI :: SavePoint (String $ SavePoint_Name): bool
Parameter:
Rückgabewert:
Beispiel:
// 创建数据库连接$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();
Im obigen Beispiel erstellen wir zuerst eine Datenbankverbindung und starten dann eine Transaktion. In einer Transaktion haben wir einige Datenbankoperationen durchgeführt und einen Speicherpunkt mit savepoint()
erstellt. Als nächstes führten wir weiterhin einige andere Datenbankvorgänge aus und rollten die Transaktion in den Zustand zurück, in dem sich der Savepoint unter Verwendung rollback_to()
-Methode befand. Schließlich haben wir die Transaktion festgelegt und die Datenbankverbindung geschlossen.
Beachten Sie, dass savepoint()
und rollback_to()
nur in transaktionsfähigen Speichermotoren wie InnoDB verfügbar sind. Diese Methoden scheitern, wenn Sie eine Speicher -Engine verwenden, die keine Transaktionen unterstützt.