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

时间:2016-05-23 20:49:26

标签: mysql mysql-workbench

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

start transaction;
delete a...
delete b...
delete c...
rollback;

我的想法是,我希望删除发生在一个事务中,该事务将在完成时回滚。如果步骤失败,我希望也可以回滚成功的步骤。

令我懊恼delete a工作,删除了几千行delete b失败,但当我重申这些陈述时, a 的所有记录似乎都消失了。< / p>

这是因为交易仍然开放吗?我试过了:

set session transaction isolation level read committed;
select a.*

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

3 个答案:

答案 0 :(得分:4)

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

enter image description here

答案 1 :(得分:1)

有人让我接受,我认为,这是一个更好的方法:

begin;
<sql transactions>
commit;

答案 2 :(得分:0)

尝试将自动提交标志设置为 false:

set @@autocommit = false;
start transaction;
delete a...
delete b...
delete c...
rollback;