MySQL 事务四大特性ACID及实现——(七)

MySQL 事务四大特性ACID及实现

8.1事务的四大特性(ACID)

1、原子性(Atomicity)

事务是一个不可分割的单位,事务中的所有SQL等操作要么都发生,要么都不发生。

2、一致性(Consistency)

事务发生前和发生后,数据的完整性必须保持一致。

3、隔离性(Isolation)

当并发访问数据库时,一个正在执行的事务在执行完毕前,对应其他的会话是不可见的,多个并发事务之间的数据是相互隔离的。备份的参数 --single-transaction

4、持久性(Durability)

一个事务一旦被提交,它对数据库中的数据改变就是永久性的。如果出了错误,事务也不允许撤销,只能通过“补偿性事务”

8.2MySql事务实现方法

-- mysql 是默认开启事务自动提交的
SET autocommit=0;-- 关闭
-- 手动处理事务
 -- 事务开启
START TRANSACTION -- 标记一个事务的开始,从之歌之后的sql都在同一个事务内

-- 对数据进行操作(注意:这两次操作在同一个事务中)
INSERT INTO xxxx;
INSERT INTO xxxx;

-- 提交:数据持久化(成功!)
COMMIT;
-- 回滚:回到对数据进行操作之前的数据(失败!)
ROLLBACK;

-- 事务结束
SET autocommit=1;-- 开启自动提交

SAVEPOINT;-- 设置一个事务的保存点
rollback TO SAVEPOINT 保存点名;-- 回滚到保存点
RELEASE SAVEPOINT 保存点名;-- 撤销保存点

8.3MySql事务实现步骤

事务.png

8.4MySql事务实现案例

-- 转账
-- 创建数据库
CREATE DATABASE `shop` CHARACTER SET utf8 COLLATE utf8_general_ci
-- 切换到当前数据库
USE shop;
-- 在当前数据库中创建一个表
CREATE TABLE `account`(
	`id` INT(4) NOT NULL AUTO_INCREMENT,
	`name` VARCHAR(60) NOT NULL,
	`money` DECIMAL(9,2) NOT NULL,
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 插入数据
INSERT INTO `account`(`name`,`money`) VALUES('A',10000),('B',20000);
-- 模拟转账:事务
-- 闭自动提交
SET autocommit=0;
-- 开启一个事务
START TRANSACTION;
-- 账户A每转账一次减少500
UPDATE `account` SET money = money - 500 WHERE `name` = 'A';
-- 账户B每收款一次加上500
UPDATE `account` SET money = money + 500 WHERE `name` = 'B';
-- 提交数据,数据持久化
COMMIT;
-- 数据回滚
ROLLBACK;
-- 事务结束,恢复默认值
SET autocommit=1;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

QZP51ZX

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

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

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

打赏作者

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

抵扣说明:

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

余额充值