開啓一個事務能夠包含一些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;