例如:
用户A给用户B转账500元
先分析下这个流程:
1、判断用户A的卡余额是否大于500元,否则,则无法进行转账操作
2、在满足大于500元的基础上,用户A给用户B进行转账
3、转账操作成功,则用户A的卡余额减去500元,用户B加上500元
用程序描述下这个过程
<?php
$userA = $momeyA;
$userB = $momeyB;
if( $moneyA < 500 )
{
return false;
}
$sqlA = "update user set money=money-500 where name='userA'"; //步骤A
$resultA = $db->query($sqlA);
if( $resultA )
{
$sqlB = "update user set money=money+500 where name='userB'";//步骤B
$resultB = $db->query($sqlB);
if( $resultB )
{
return true;
}else
{
$sqlA = "update user set money=money+500 where name='userA'";//步骤C
$resultA = $db->query($sqlA);
return false;
}
}
$sqlA = "update user set money=money+500 where name='userA'";//步骤D
$resultA = $db->query($sqlA);
return false;
?>
从事务的角度看:
1、在转账过程中,出现有误,则该错误对双方而言,是没有影响的。即不可能因为某个错误,导致用户A白白减少500,而用户B莫名其妙多了500
2、在转账过程中,用户A是不可能看到自己的卡余额减下500,而用户B也是无法看到自己增加500元,因为转账操作还未结束。
3、单单从这个过程,用户A与用户B的总金额是不变的。只不过是一方减少,另一方增加