开启一个事务能够包含一些sql语句,这些sql语句要么同时成功
要么一个都别想成功,称之为事务的原子性python
保证了对数据操做的数据安全性mysql
案例:用交行的卡操做建行ATM机给工商的帐户转钱sql
原子性、一致性、隔离性、持久性。这四个属性一般称为ACID特性。数据库
create table user( id int primary key auto_increment, name char(32), balance int ); insert into user(name,balance) values ('wsb',1000), ('egon',1000), ('ysb',1000); # 修改数据以前先开启事务操做 start transaction; # 修改操做 update user set balance=900 where name='wsb'; #买支付100元 update user set balance=1010 where name='egon'; #中介拿走10元 update user set balance=1090 where name='ysb'; #卖家拿到90元 # 回滚到上一个状态 rollback; # 开启事务以后,只要没有执行commit操做,数据其实都没有真正刷新到硬盘 commit; """开启事务检测操做是否完整,不完整主动回滚到上一个状态,若是完整就应该执行commit操做""" # 站在python代码的角度,应该实现的伪代码逻辑, try: update user set balance=900 where name='wsb'; #买支付100元 update user set balance=1010 where name='egon'; #中介拿走10元 update user set balance=1090 where name='ysb'; #卖家拿到90元 except 异常: rollback; else: commit;