MySQL Workbench:在回滚之前似乎已提交启动事务

Ice*_*nte 2 mysql mysql-workbench

我写了一堆删除语句并将它们包装在一个事务中:

start transaction;
delete a...
delete b...
delete c...
rollback;
Run Code Online (Sandbox Code Playgroud)

这个想法是我希望删除发生在完成后回滚的事务中。如果一个步骤在此过程中失败,我希望成功的步骤也能回滚。

令我懊恼的delete a是,删除了几千行,delete b但失败了,但是当我重新运行语句时,a 中的所有记录似乎都消失了。

这是因为交易仍处于打开状态吗?我试着做:

set session transaction isolation level read committed;
select a.*
Run Code Online (Sandbox Code Playgroud)

并返回零行,所以我认为情况并非如此。是否已a提交成功删除?如果是这样,在我可以保证完整的工作查询之前,我如何防止这种情况发生?

Mik*_*hke 5

MySQL Workbench 默认启用自动提交。在 SQL 编辑器中有一个工具栏按钮,可用于随意切换自动提交:

在此处输入图片说明