【MySQL学习笔记】MySQL原理---事务

一、事务的提出

购买商品时点击支付,并未付款,

思考此时数据库的变化是怎样的?


也就是说,某些时候,

需要我们确定某事物之后再更新数据库。

因此引入————事务(transaction)



二、transaction

创建一个钱包表:

请添加图片描述


开始一个事务:

START TRANSACTION;

让1号用户金额减50:

UPDATE wallet SET balance=balance-50 WHERE id=1;

让2号用户金额加50:

UPDATE wallet SET balance=balanc+50 WHERE id=2;

提交事务,完成转账操作:

COMMIT;

请添加图片描述


开始一个新的事务:

START TRANSACTION;
UPDATE wallet SET balance=balance+20;

不想进行当前操作时,进行事务回滚:

ROLLBACK;

此时数据表没有发生变化。

请添加图片描述


注意:一旦commit以后就不能再rollback回滚



三、rollback to回滚点

参考虚拟机中的快照、git中的回滚

开始一个事务:

START TRANSACTION;

在钱包表中插入一条数据:

INSERT INTO wallet VALUES(4,1000);

设置一个回滚点:

SAVEPOINT four;

再在钱包表中插入一条数据:

INSERT INTO wallet VALUES(5,199999);

设置下一个回滚点:

SAVEPOINT five;

此时发现第二次插入的数据不正确

回滚至上一个回滚点:

ROLLBACK TO four;

提交事务,完成操作:

COMMIT;


四、ACID

A:atomicity(原子性)

C:consistency(一致性)

I:isolation(隔离性)

D:durability(持久性)



五、注意

只有创建数据库时指定:
数据库引擎为 innodb 才能使用事务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值