Mysql第三天笔记02——事务

目录

1.事务的概念

2.事务的作用

3.事务的组成

4.事务的四大特征(ACID)

5.事务处理的两种方法

6.隐式结束

7.设置保存点


1.事务的概念

事务(Transaction)也称工作单元,是由一个或多个SQL语句所组成的操作序列,这些SQL语句作为一个完整的工作单元,要么全部执行成功,要么全部执行失败。在数据库中,通过事务来保证数据的一致性。

2.事务的作用

通过事务的使用,能防止数据库中出现数据不一致现象。如两个银行账户进行转账,涉及到两条更新操作,这两条更新操作只允许全部成功或失败,否则数据会出现不一致的现象。

3.事务的组成

在数据库中,事务由一组相关的DML或SELECT语句,加上一个TPL语句(COMMIT、ROLLBACK)或一个DDL语句(CREATE、ALTER、DROP、TRUNCATE等)或一个DCL(GRANT、REVOKE)语句。

例:如下语句组成两个事务。

INSERT….

UPDATE….

DELETE….

SELECT….

INSERT…

COMMIT;-- 前6条语句,组成第1个事务

UPDATE…

DELETE….

CREATE… ;--后3条语句,组成第2个事务

4.事务的四大特征(ACID)

(1)原子性(Atomicity):事务就像“原子”一样,不可被分割,组成事务的DML操作语句要么全成功,要么全失败,不可能出现部分成功部分失败的情况。

(2)一致性(Consistency):一旦事务完成,不管是成功的,还是失败的,整个系统处于数据一致的状态。

(3)隔离性(Isolation): 一个事务的执行不会被另一个事务所干扰。比如两个人同时从一个账户从取钱,通过事务的隔离性确保账户余额的正确性。

(4)持久性(Durability): 也称为永久性,指事务一旦提交,对数据的改变就是永久的,不可以再被回滚。

5.事务处理的两种方法

(1)用begin,rollback,commit来实现

begin:开启一个事务

rollback:事务回滚

commit:事务提交

(2)直接用set来改变MySQL的自动提交模式

MySQL默认是自动提交的,也就是提交一个sql,就直接提交。可以通过:
 

set autocommit = 0;-- 禁止自动提交  

set autocommit = 1; --开启自动提交

 来实现事务的处理。

6.隐式结束

(1)隐式提交:当下列任意一种情况发生时,会发生隐式提交

执行一个DDL(CREATE、ALTER、DROP、TRUNCATE、RENAME)语句;

执行一个DCL(GRANT、REVOKE)语句;

(2)隐式回滚:当下列任意一种情况发生时,会发生隐式回滚

客户端强行退出、客户端连接到服务器端异常中断、系统崩溃

7.设置保存点

如果在一个事务内,想要回滚到指定位置,不是回滚到事务的起始点,可以通过保存点(SAVEPOINT)来实现。

例子:

use test;
create table test(
	test_int int
);
set autocommit = 0;
begin;--开启事务
delete from test;
rollback; --撤销delete
insert into test values(12);
savepoint a;--定义保存点a
insert into test values(34);
savepoint b;--定义保存点b
insert into test values(56);
savepoint c;--定义保存点c
rollback to b;--撤销操作到b,此时test只剩12,34
delete from test where test_int = 34;--此时test只剩12
commit;--提交,最后test只剩12
rollback;--操作已提交,此时回滚无法撤销操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值