1 sql 中的事务
介绍:
一条或者多条的 sql 语句组成的执行单元
特点:
这些 sql 语句相互依赖,要么同时执行成功,要么同时失败,若是每条 sql 语句都执行成功,整
个事务就成功,进行后续步骤,若是执行失败,则事务会回到初始状态
2 事务操作
(1)
开启事务
start transaction;
(2) 事务回滚
rollback;
(3) 提交事务
commit;
1>: 方式
手动
自动(mysql 默认)
2>: 查看事务提交方式
select @@autocommit;
3>: 修改事务提交方式
set @@autocommit=数字;
3 事务的四大特征。
(1) 原子性 atomicity
对数据的操作要么全部成功要么全部失败,成功则新的数据必须应用到数据库中
若是失败,需要事务回滚(重新进行数据的整体操作),同时数据不能影响库中数据,
(2) 一致性 consistency
事务执行前后数据库中的数据需要保持一致的状态
(3) 隔离性 isolcation
多个用户同时操作一张表,给每个用户开启线程,让数据隔离,防止其中某用户在数据
操作过程中被干扰出现数据错误,最终能以一致的状态入库(
重点
)
(4) 持久性 durability
事务一旦提交,数据库中的数据改变就是永久的,这个提交无论数据库发生怎样的状
况,该提交最终都会被执行
4 事务的隔离级别
介绍:
多个客户端操作时,各个客户端的事务之间应该是隔离的,相互独立的,不受影响, 而如果多个事务操作同一批数据时,就会产生不同的问题,我们需要设置不同的隔离级别来解决这些问题。
隔离级别及引发的问题:

引发问题:
脏读:
事务处理过程中读取到另外一个没有提交的事务中的数据,导致两次查询读
到的结果不一致
不可重复读:
在一个事务过程中读到另外一个事务已经提交的数据,导致两次读
取结果不一致
幻读:
查询时报数据不存在,当对数据进行重新的插入操作时,发现记录已经存在,无法
进行数据插入,还有就是查询数据报不存在,但是对该数据进行删除时却出现删
除成功
查询数据库的隔离级别:
语法: select @@tx_isolation;
修改数据库的隔离级别:
语法: set global transaction isolation level 级别字符串
注意: 不建议修改数据库的隔离级别,数据库的隔离级别越高,安全性越高,但是效率就会越低