use*_*729 2 php database transactions
try
{
$con->beginTransaction();
$this->doSave($con);
$con->commit();
}
catch (Exception $e)
{
$con->rollBack();
throw $e;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码是一种非常标准的处理事务的方法,
但我的问题是:如果$con->rollBack()也失败了怎么办?
它可能会导致数据库锁定,对吗?如果是这样,那么完美的方法是什么?
使用事务时,基本思想是在commit调用之前实际上不会将任何内容永久写入数据库。
几种情况:
die)rollback.
为了让事情变得简单:从 开始begin transaction,没有任何东西被永久写入数据库,直到您发送commit. 如果没有提交......没有什么是永久写入的,并且当您的 PHP 脚本与数据库断开连接时,数据库会“取消”该 PHP 脚本未提交的内容。
当然,如果您使用 PHP 以外的其他东西连接到您的数据库,这也是完全相同的——例如命令行 MySQL 客户端。