使用Navicat时,若是自动提交是打开状态,就相当于是自动执行了commit操作,就无法进行回滚操作。
一.相关指令
1.查询Navicat的自动提交开关状态:
-- 查询自动提交 ON:是自动提交,即commit ;OFF:不是自动提交,需要commit
show variables like 'autocommit';
2.设置Navicat的自动提交开关状态:
-- 关闭自动提交
set autocommit = 0;
-- 打开自动提交
set autocommit = 1;
3.设置回滚测试语句:
-- 测试
-- 删除数据
DELETE FROM emp;
-- 查询删除结果
SELECT * FROM emp;
-- 回滚
ROLLBACK;
-- 查询回滚结果
SELECT * FROM emp;
二、举例分析
1.创建一个表,并插入相关数据
-- 创建表
CREATE TABLE emp(
#int 类型,自增
emp_id INT AUTO_INCREMENT,
#最多保留20个中英文字符
emp_name CHAR(20),
#总位数不超过15位
salary DOUBLE,
#日期类型
birthday DATE,
#主键
PRIMARY KEY(emp_id)
);
-- 插入数据
INSERT INTO emp(emp_name, salary, birthday)
VALUES("恩泽", 2088, "2000-01-01"),("洪恩", 3099, "1999-12-11");
2.查询Navicat自动提交开关状态
2.1 开关状态——ON
然后执行下面语句,发现被删除的数据无法回滚:
2.2 开关状态——OFF
然后执行下面语句,发现被删除的数据回滚回来了:
三、参考
1.关闭Navicat的自动提交,不然就很难回滚了_navicat设置不自动提交_IT北辰的博客-CSDN博客