相关问题,但不是我想知道的,因为我对PHPmysqli
lib/函数的具体行为很好奇:
假设我有这样的代码(不管它是好的还是坏的实践):
# ... some code
$conn = new mysqli('localhost', 'widget-manager', 'secret-widgets', 'widgets');
$conn->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);
if (false) {
$sql = "UPDATE widgets SET widget_num = 1 WHERE widget_id = 5";
$res = $conn->query($sql);
if ($res) {
$conn->commit();
} else {
$conn->rollback();
}
}
$conn->close();
# ... some more code
包含提交和回滚的if
将被跳过,而mysqli
连接将在事务启动后但在调用提交或回滚之前关闭。
该事务是否也会立即被销毁/结束/不管什么专有名词,或者它会保留下来并可能阻止来自其他服务的其他查询?
如果客户端断开连接,MySQL服务器将清理会话。这将回滚任何未提交的事务、释放行锁和表锁、移除临时表和会话变量等。
使用哪种客户机接口(mysqli vs.PDO vs.Java vs.anything)没有区别。