假设:
mysql_query("START TRANSACTION");
mysql_query("UPDATE foo = 'bar'");
die();
die()
会在COMMIT
或ROLLBACK
之前停止交易。看看我的表,似乎没有发生更新,但如果我稍后在另一个脚本中运行查询,它们仍然是该初始事务的一部分吗?在我COMMIT
或ROLLBACK
之前,交易是否仍处于“开放”状态?
答案 0 :(得分:4)
如果die终止了与mysql的连接,那么是,该事务将被关闭。如果你刚刚离开交易,虽然你会遇到麻烦。
我建议确保事务和提交在同一个mysql_query中,如果完全可以确保它实际发生的话。
答案 1 :(得分:1)
这取决于您的序列化级别。如果事务既未提交或回滚,则应在一段时间后超时并在数据库中回滚。但在此之前,它是一个未完成的事务,可能导致其他非可序列化事务中的选择不一致。取决于level: