[size=22.0000pt]事务[size=16.0000pt] 1场景 一组sql(增删改)要么都执行,要么都不执行。 场景:A有10000元 B有10000元 A向B转账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 另一个客户端中的数据,的也随之发生了变化,钱已经转账成功。 总结:事务保持数据的完整性,具有原子性.
|