事务基本的手动操作指令
首先建个表压压惊:
CREATE TABLE `test1` (
`id` int ,
`age` int DEFAULT NULL,
`inttl` int DEFAULT NULL,
`test` int DEFAULT NULL,
`testc` char(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
先看一下数据库用的时什么引擎
show table status from dev where name = "test1"; -- 产看数据库dev的表test1使用的存储引擎
可以看到我的表是innoDb引擎的
然后看一下autocommit的值,off表示自动提交事务是关闭的,on表示自动提交事务是开启的
show variables like '%autocommit%'; -- 查看autocmmit的值
开始事务
当自动提交事务的状态是开启的时候,只用使用start transaction才能够 回滚(rollback)和提交(commit)。
start transaction; -- 开始事务
开始事务后执行正常的insert语句
INSERT INTO `test1`(`age`, `inttl`, `test`, `testc`) VALUES (1, 1, 2, 'm');
可以回滚,回滚就是这个事务的所有操作都清除并且结束事务。
rollback ; -- 回滚
然后再查一下数据就没有了
也可以设值一个回滚的点
savepoint point1; -- 保存还原点
先插入一条数据然后定一个还原点
然后定还原点:
然后再插入数据:
然后定点回滚
rollback to point1; -- 回滚到某个还原点
只有一条数据了:
最后提交事务,提交后这个事务也就完了
commit; -- 提交事务
回滚对于truncate是无法回滚的哦,感兴趣的可以试一下。
truncate test1; -- 清空表
delete from test1; -- 删除表数据
#回滚,对于truncate无法回滚
rollback; -- 回滚
对于新增表字段也是无法回滚的,语句贴在下面了,可以试一下。
alter table test1 add description varchar(50); --新增字段
#回滚,对于修改表结构的语句无法回滚
rollback;