二、事务四大特征数据库的事务是一种机制,一个操作序列事务把一组操作命令视为一个整体,要么全部执行成功,要么都执行失败,只要有一个失败,就无法成功事务是一个不可分割的工作逻辑单元
原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败。一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态隔离性(lsolation) :多个事务之间,操作的可见性持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
MySQL数据库事务为默认提交,但是我们可以设置为手动提交
-- 查看事务的默认提交。方式返回 1 则是自动提交,返回 0 则是手动提交 SELECT @@autocommit; --修改事务提交方式 set @@autocommit = 0;
在开启事务后,事务中出现错误,还没commit之前,在本窗口查询出来的结果是执行sql语句之后的结果,但是当我们再打开一个查询窗口,会发现结果还是执行sql语句之前的结果
begin; update user set username = '刘德' where id = 21; ksjadlks出错了 update user set username = '张丰' where id = 26;
当前窗口查询结果
其他窗口查询的结果,显示的还是之前的结果,执行的sql语句并没有生效
若想当前执行的sql语句生效,则需执行commit,若不想要错误执行的结果,可以使用roolback回滚事务,使其回到执行sql语句之前的状态
begin;-- 开始事务,可用 start transaction替代 update user set username = '刘德华' where id = 21; ksjadlks出错了 update user set username = '张三丰' where id = 26; commit; -- 提交事务 rollback; -- 回滚事务
注意:一旦提交或回滚事务之后,数据将被持久化到数据库,即数据被真正的写入数据库中,无法回退,只能另行修改



