今天同事在使用Navicat Premium 操作MySql时想执行某条件的SELECT语句查询是否有数据,没注意粘贴的是 DELETE 语句点击执行后意识到问题 ,立即执行rollback再查询发现数据还是被删掉了。然后就想将Navicat Premium 自動提交给取消防止之后再发生此类情况。
查询了下 Navicat Premium 软件本身没找到可设置取消自动提交的选项从MySql 的角度看有没有解决方式。先说结论:
需要注意的是:该方式的生效范围为session 级别即重新登录,或者打开新的查询页面都需要单独设置该参数,否则使用的还是MySql 的默认设置
MySql 的默认设置,可通过以下语句查看
下面为当时的实验步骤:
(2) 创建测试表并插入基础数据
(3) 同时执行以下查询-删除数据-查询结果-執行rollback-查询结果 语句
3次查询结果分别如下:
可以发现,删除后执行的rollback 并未生效id=4 的数据还是被删掉了。
2次查询结果分别如下:
这时发现 delete 后 嘚rollback语句生效了,达到了想要的效果
重新打开查询界面或重新登录后,该属性依旧为 ON 即该设置为 session 级别,重新登录或者打开新的 查询页媔,都需要单独设置