我写了一堆删除语句,并将它们封装在一个事务中:
start transaction;
delete a...
delete b...
delete c...
rollback;
我的想法是希望删除操作发生在一个事务内,在完成后进行回滚。如果其中一步失败,我希望成功的步骤也被回滚。
令我烦恼的是,delete a
能够正常工作,删除了几千行记录,但 delete b
失败了。但当我重新运行这些语句时,所有来自 a 的记录似乎都不见了。
这是因为事务仍然处于打开状态吗?我尝试过执行以下命令:
set session transaction isolation level read committed;
select a.*
我执行了删除操作,但是返回了零行结果,所以我认为并没有删除成功。那么成功的a
删除是否已提交?如果是,那么在我能够保证完全可用的查询之前,如何防止这种情况再次发生?
autoCommit
。 - undefined