首页 / MYSQL / MySQL ----- 事务
MySQL ----- 事务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL ----- 事务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2517字,纯文字阅读大概需要4分钟。
内容图文
![MySQL ----- 事务](/upload/InfoBanner/zyjiaocheng/518/7c3dff5b6ab14ea3bb10f217d805c752.jpg)
事务
事务介绍
? 简单地说,事务就是指逻辑上的一组SQL语句操作,组成这组操作的各个SQL语句,执行时要么全成功要么全失败。
? 例如:你给我转账5块钱,流程如下
? a.从你银行卡取出5块钱,剩余计算money-5
? b.把上面5块钱打入我的账户上,我收到5块,剩余计算money+5.
? 上述转账的过程,对应的sql语句为:
update 你_account set money=money-5 where name='你';
update 我_account set money=money+5 where name='我';
? 上述的两条SQL操作,在事务中的操作就是要么都执行,要么都不执行,不然钱就对不上了。
? 这就是事务的原子性(Atomicity)。
事务的四大特性
? 1.原子性(Atomicity)
? 事务是一个不可分割的单位,事务中的所有SQL等操作要么都发生,要么都不发生。
? 2.一致性(Consistency)
? 事务发生前和发生后,数据的完整性必须保持一致。
? 3.隔离性(Isolation)
? 当并发访问数据库时,一个正在执行的事务在执行完毕前,对于其他的会话是不可见的,多个并发事务之间的数据是相互隔离的。也就是其他人的操作在这个事务的执行过程中是看不到这个事务的执行结果的,也就是他们拿到的是这个事务执行之前的内容,等这个事务执行完才能拿到新的数据。
? 4.持久性(Durability)
? 一个事务一旦被提交,它对数据库中的数据改变就是永久性的。如果出了错误,事务也不允撤销,只能通过‘补偿性事务‘。
MySQL中事务操作指令
看语法:
BEGIN或START TRANSACTION;显式地开启一个事务;
COMMIT; 也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改成为永久性的;
ROLLBACK; 有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
事务简单实例
create table user(
id int primary key auto_increment,
name char(32),
balance int
);
insert into user(name,balance)
values
('wsb',1000),
('chao',1000),
('ysb',1000);
#原子操作
start transaction;
update user set balance=900 where name='wsb'; #买支付100元
update user set balance=1010 where name='chao'; #中介拿走10元
update user set balance=1090 where name='ysb'; #卖家拿到90元
commit; #只要不进行commit操作,就没有保存下来,没有刷到硬盘上
#出现异常,回滚到初始状态
start transaction;
update user set balance=900 where name='wsb'; #买支付100元
update user set balance=1010 where name='chao'; #中介拿走10元
uppdate user set balance=1090 where name='ysb'; #卖家拿到90元,出现异常没有拿到
rollback; #如果上面三个sql语句出现了异常,就直接rollback,数据就直接回到原来的状态了。但是执行了commit之后,rollback这个操作就没法回滚了
commit;
MySQL ----- 事务
标签:table iso 永久 where 可见 通过 back rem 银行
本文系统来源:https://www.cnblogs.com/zhufanyu/p/12129454.html
内容总结
以上是互联网集市为您收集整理的MySQL ----- 事务全部内容,希望文章能够帮你解决MySQL ----- 事务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。