mysql事务处理

有一张银行账号表

create table account
(id int primary key,
balance float);
 
现在有一段php程序要完成  1 10 元钱,转到 2号账号上
事务
基本:事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。如:网上转账就是典型的要用事务来处理,用以保证数据的一致性
 
 
现在我们使用事务来完成上面的代码
 
代码:
 1 <?php
 2       
 3        $mysqli=new MySQLi("localhost","root","hsp123","test");
 4        if($mysqli->connect_error){
 5               
 6               die($mysqli->connect_error);
 7        }
 8       
 9        //将提交设为false[事务一旦提交就没有机会回滚
10        $mysqli->autocommit(false);
11        //-> savepoint a;会把但前情况记录
12        $sql1="update account set balance=balance-2 where id=1";
13        $sql2="update account2 set balance=balance+2 where id=2";
14        $b1=$mysqli->query($sql1) ;
15        $b2=$mysqli->query($sql2) ;
16       
17        if(!$b1||!$b2){
18               echo "失败,回滚".$mysqli->error;
19               //回滚!
20               $mysqli->rollback();
21        }else{
22               //提交[一旦提交没有机会回滚
23               $mysqli->commit();
24        }
25        $mysqli->close();
26        //显示控制台
27 ?>

? mysql控制台可以使用事务来操作,具体步骤如下

 
1.      开启一个事务
start transaction
2.      做保存点
savepoint 保存点名称
 
3.      操作....
4.      可以回滚,可以提交
4.1    如果没有问题提交
commit
4.2    如果你觉得有问题,就回滚
rollback to 保存点.
 
      事务的acid特性
原子性,一致性,持久性,隔离性.

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。