MySql之事务详解

1.什么是事务

  • 事务是一个原子操作。是一个最小执行单元。可以甶一个或多个SQL语句组成
  • 在同一个事务当中,所有的SQL语句都成功执行时,整个事务成功,有一个SQL语句执行失败,整个事务都执行失败。

2.事务特性

  • 原子性(Atomicity):事务是一个原子性质的操作单元,事务里面的对数据库的操作要么都执行,要么都不执行。
  • 一致性(Consistency):在事务开始之前和完成之后,数据都必须保持一致状态,必须保证数据库的完整性。也就是说,数据必须符合数据库的规则。
  • 隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(Durability):持久性也成为永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久的。

3.MySQL事务操作

事务分为隐式事务显式事务

查看是否开启自动提交

show variables like 'autocommit';

手动控制事务

方式一:

示例一:提交事务操作

set autocommit=0;
insert into t_test values(1);
commit;

示例二:回滚事务操作

set autocommit=0;
insert into t_test values(2);
rollback;
方式二:

autocommit还原回去:

set autocommit=1;

示例一:提交事务操作

start transaction;
insert into t_test values (2);
insert into t_test values (3);
commit;

最终结果:成功插入2条数据记录。

示例二:回滚事务操作

start transaction;
delete from t_test;
rollback;

最终结果:由于执行了rollback操作,导致删除操作回滚。

3.3.savepoint关键字

可以实现回滚事务中部分数据,相当于一个书签,放在哪回滚到哪

savepoint效果演示:

start transaction;
insert into t_test values (1);
savepoint point1;
insert into t_test values (2);
rollback to point1;
commit;

最终结果:保存点point1rollback to point1之间的操作将被回滚。

3.4.只读事务

表示在事务中执行的是一些只读操作,如查询,但是不会做insert、update、delete操作。

start transaction read only;
select * from t_test;
delete from t_test;
commit;

最终结果ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值