mysql事务解析

it2023-04-02  85

事务的概念

■是一种机制、一个操作序列,包含了- -组数据库操作命令,并且把所有的命令作为-个整体一起向系统提交或撤销操作请求,即这- -组数据库命令要么都执行, 要么都不执行 ■是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元 ■适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等 ■通过事务的整体性以保证数据的-致性

事务的四大特性

1、原子性(Atomicity) ●事务是一个完整的操作,事务的各元素是不可分的 ●事务中的所有元素必须作为-个整体提交或回滚 ●如果事务中的任何元素失败,则整个事务将失败 2、-致性(Consistency) ●当事务完成时,数据必须处于一致状态 ●在事务开始前,数据库中存储的数据处于一致状态 ●在正在进行的事务中,数据可能处于不一致的状态 ●当事务成功完成时,数据必须再次回到已知的一致状态事务的ACID特点2-2 3、隔离性(Isolation) ●对数据进行修改的所有并发事务是彼此隔离的,表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务 ●修改数据的事务可在另-一个使用相同数据的事务开始之前访问这些数据,或者在另-一个使用相同数据的事务结束之后访问这些数 4、持久性(Durability) ●指不管系统是否发生故障,事务处理的结果都是永久的 ●一旦事务被提交,事务的效果会被永久地保留在数据库中

事务控制语句

■MySQL事务默认是自动提交的,当SQL语句提交时事务便自动提交 ■事务控制语句 ●BEGIN或START TRANSACTION ●COMMIT ●ROLLBACK ●SAVEPOINT identifer ●RELEASE SAVEPOINT identifier ●ROLLBACK TO identifier ●SET TRANSACTION

事务的控制方法

■手动对事务进行控制的方法 ●事务处理命令控制事务 ◆bebin: 开始一个事务 ◆commit: 提交- 个事务 ◆rollback: 回滚一 个事务 ●使用set命令进行控制 ◆set autocommit=0:禁止自动提交 ◆set autocommit=1:开启自动提交

事务的实操演示

mysql> begin; #事务开始 mysql> insert into user_info values (‘000011’,‘tom’,‘男’,‘021’,‘44’); #插入数据1 mysql> insert into user_info values (‘000012’,‘jack’,‘男’,‘021’,‘44’); #插入数据2 mysql> commit; #提交,将事务中执行的命令写入数据库,结束本事务

此过程中,若没有提交commit,就直接退出exit,则事务中的命令无法写入数据库。

rollback 回滚

mysql> begin; #事务开始 mysql> insert into user_info values (‘000013’,‘jack’,‘女’,‘021’,‘44’); #插入13数据 mysql> savepoint a; #存档点a mysql> insert into user_info values (‘000014’,‘tom’,‘女’,‘021’,‘44’); #插入14数据 mysql> savepoint b; #存档点b mysql> insert into user_info values (‘000015’,‘jim’,‘女’,‘021’,‘44’); #插入15数据 mysql> rollback to a; #回滚到存档点a,此时存档点a后面的语句被直接清除了,没有存档点b,也没有插入数据14和15. mysql> rollback; #直接回到事务刚开始时,事务结束

使用set设置控制事务

set autocommit = 0; #禁止自动提交 set autocommit = 1; #开启自动提交,系统默认自动提交

当我们输出set autocommit = 0; 后,相当于开启了事务,所有的命令,必须手动提交才能写入数据库。 即使我们手动commit提交后,也只是将前面的命令提交了,提交后继续输出的命令仍然要手动提交,rollback也不能结束这种状态。 直到我们输出set autocommit = 1;这种状态才会结束。

最新回复(0)