事务处理用一句简单的术语称为“原子操作",即一件事情,要么全部完成,要么一个也别完成;有一种一荣俱荣,一损俱损的感觉。
最常用的就是在交易过程中,比如在网络中,甲方付费给乙方,钱确认付款,但是乙方并未确认收款,那么,甲方的账户并不会减少,乙方的账户也并不会增加。
只有当甲方确认付款,乙方确认收款,两个步骤都完成,并且不出现错误的时候,双方的账户才会改变
看代码也许更好理解
1 <?php 2 try{ 3 $pdo=new PDO("mysql:host=localhost;dbname=test","root","root"); 4 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 5 6 $pdo->beginTransaction();//开始一个事务 7 8 //操作一 9 $num_1=$pdo->exec("delete from test_pdo where id=2"); 10 if($num_1<=0){ 11 throw new PDOException("action one is failed"); 12 } 13 14 //操作二 15 $num_2=$pdo->exec("delete from test_pdo where id=3"); 16 if($num_2<=0){ 17 throw new PDOException("action two is failed"); 18 } 19 20 //执行到此处,证明来两个操作都成功了,可以提交 21 $pdo->commit(); 22 echo "all action is success\n"; 23 } catch (PDOException $e){ 24 //如果抛出异常,则证明至少有一个操作未完成,于是rollback,取消已经完成的操作 25 $pdo->rollback(); 26 echo $e->getMessage(); 27 }
这只是一个最简单的事务处理,如果能明白这个代码,相信你已经对事务处理有一定理解了
时间: 2024-11-03 21:53:19