事务

一、定义

事务:一系列要发生的连续操作
事务安全:一种保护连续操作同时满足实现的一种机制
事务安全的意义:保证数据操作的完整性

事务的原理

事务在开启后,所有的操作都会临时保存到事务日志中,事务日志只有在commit 命令执行后,才会将数据同步到数据表,其他任何情况都会被清空(rollback,断电,断开连接)

屏幕快照 2017-08-15 下午4.00.14.png

二、事务操作

示例:
先创建一张账户表

create table my_account(
    number char(16) not null unique comment "账户",
    name varchar(20) not null,
    money decimal (10,2) default 0.0 comment '账户余额'
) charset utf8;

--插入数据
insert into my_account (`number`,`name` ,`money` )values('0000000000000001','张三',1000),
('0000000000000002','李四',2000)

事务操作分为两种:自动事务和手动事务

2.1手动事务

操作流程
1.开启事务:告诉系统以下的操作(写),不要直接写到数据表中,先存放到事务日志
指令:

start transaction;

2.事务操作
李四向张三转账1000,李四账户减少1000,张三账户增加1000
(a)李四账户减少1000

update my_account set money = money - 1000 where id = 2;

查看数据表
select * from my_account


但用其他账户登录,李四账户没有改变
(b)张三账户增加1000块

update my_account set money = money + 1000 where id = 1;
屏幕快照 2017-08-15 下午3.25.21.png

(3)关闭事务
选择性的将日志文件的操作结果同步到数据表,或者直接清空操作日志(原来的操作全部清空)
(a)提交事务:同步数据(操作成功)commit
(b)回滚事务:直接清空日志表(操作失败)rollback

(4)提交事务

commit

回滚点

在某个操作成功完成之后,后续的操作有可能成功,有可能失败,但不管成功,还是失败,前面的操作都已经成功,可以在当前成功的位置,设置一个点,可以供后续失败操作返回到该位置,而不是返回所有操作,这个点就叫做回滚点.

  • 设置回滚点语法:
savepoint 回滚点名字
  • 回到回滚点语法:
rool back to 回滚点名字

2.2 自动事务

mysql 中默认都是自动事务,用户完成操作会立即同步到数据表中
自动事务处理通过 atuocommit 变量控制

show variables like 'atuocommit'

关闭自动提交

set atuocommit= off/0;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 7.1 认识事务 7.1.1 概述 在事务中的操作, 要么都做修改, 要么都不做, 这就是事务的目的,也是事务模型...
    张健飞阅读 742评论 0 0
  • 导语:计算机硬件在飞速发展,数据规模在急速膨胀,但是数据库仍然使用是十年以前的架构体系,WiredTiger 尝试...
    isgiker阅读 3,446评论 0 7
  • 什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点。 原子性:要不全部成功,要不全部撤销 隔...
    jiangmo阅读 1,094评论 0 3
  • 我猜某小伙很忐忑,如何正确处理压力,他和我一样都有些手足无措,常常不自信,经常有些无谓的担忧,焦虑,随我吧,不太好...
    lonely_tree阅读 332评论 1 0
  • 世间最可笑的事是你最相信的人不相信你。 面对变故不再觉得天崩地裂,该洗衣洗衣,该收拾收拾,因为生活还要继续,这是不...
    莫莫queen阅读 221评论 0 0