MYSQL事务的学习

第一、事务的原则

ACID原则:

原子性(atomicity):要么都成功,要么都失败

一致性(consistency):事务前后的数据完整性要保存一直

持久性(durability):事务提交,事务一旦提交则不可逆转,被持久化到数据库中

隔离性(isolation):事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离

        隔离会导致:

脏读:指一个事务读取了另外一个事务未提交的数据。

不可重复读:在一个事务内读取表中某一行数据,多次读取结果不同

幻读(虚读):是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

第二、事务的使用

1、MySQL默认开启事务自动提交

set autocommit = 0 -- 关闭事务
set autocommit = 1 -- 开启事务

2、手动处理事务

(1)、创建测试数据库

create database shop character set utf8 collate utf8_general_ci;

(2)、创建表

use shop;
create table account(
    id int not null auto_increment,
    name varchar(11) not null ,
    money decimal(9,2) not null ,
    primary key (id)
)engine = INNODB DEFAULT CHARSET = utf8

(3)、插入数据

insert into account(name, money) VALUES ('wjdsg',10000),('小明',1000)

(4)、模拟转账,wjdsg给小明转账500

set autocommit = 0; -- 关闭mysql默认自动提交
start transaction -- 开启一个事务

update account set money=money-500 where name='wjdsg'; -- wjdsg给小明转账
update account set money=money-500 where name='小明'    -- 小明收到转账

commit; -- 提交时间,数据持久化
rollback;   -- 回滚

set autocommit  = 1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wjdsg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值