A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[学习交流] mysql的事务

© 冯程程 中级黑马   /  2019-2-19 14:58  /  1210 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[size=22.0000pt]事务[size=16.0000pt] 1场景
一组sql(增删改)要么都执行,要么都不执行。
场景:A10000
B10000
AB转账500,是两条更新
update bill set 余额=余额-500 where A;
update bill set 余额=余额+500 where B;
这两条数据必须要么都执行,要么都不执行,如果执行了一半,发生问题,那么执行过的sql要回滚。
[size=16.0000pt] 2 事务(transaction)的讲解[size=14.0000pt]什么是事物
事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。
[size=14.0000pt] 事务的优点
  1. A(atomicity) 原子性。事务里面的操作,要么全部成功执行,要么全部失败回滚,不可以只执行其中的一部分。
  2. C(consistency) 一致性。一个事务的执行不应该破坏数据库的完整性约束。
  3. I(isolation) 隔离性。通常来说,事务之间的行为不应该互相影响。
  4.  4. D(durability) 持久性。事务提交之后,需要将提交的事务持久化到磁盘。即使系统崩溃,提交的数据也不应该丢失。
[size=14.0000pt] 使用事务的好处
在修改数据的操作中保持数据的完整性.
[size=14.0000pt] 事务的使用
语法
开启事务: start  transaction  begin [work]
sql语句的执行
提交事务commit
回滚事务:rollback;
在事务开始和结束之间的这些sql,就在同一个事务中。
例题
创建表并且插入数据
创建表:
create table info(
id int auto_increment primary key,
name varchar(5),
money decimal(10,2)
);
insert into info values(1,'张三',1000);
insert into info values(2,'李四',1000);
例题:让张三给李四成功转50
1  开启事务:start transaction;
2 让张三少50,李四多50
update info set money=money-50 where id=1;
update info set money=money+50 where id=2;
3  这时需要重新打开一个mysql客户端查看数据,发现数据没有发生变化;
提交事务:commit
4  另一个客户端中的数据,的也随之发生了变化,钱已经转账成功。
总结:事务保持数据的完整性,具有原子性.

3 个回复

倒序浏览
回复 使用道具 举报
今天也要加油鸭
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马