所谓事务就是让几个事情并发的执行。
举个简单的例子,银行的自动转帐系统:需要从a帐户转帐 1000元到b帐户,首先从a帐户减去1000,然后给b帐户加1000,但是如果在加1000的过程中,发生了停电,怎么办呢?a帐户少了1000,但是b帐户却没有得到1000,这显然是错误的,理想的状况是,数据库取消当前进程中的所有操作,包括从a帐户取1000操作,这就需要用事务来实现,把这 2个过程当作一个事务,当所有操作都完成后,才把结果提交,如果在当中出现了什么问题,数据库返回到最开始的状态。
举个小例子,在php中应用事务:
mysql_query('SET AUTOCOMMIT=0');//取消数据库自动提交的功能
mysql_query("START TRANSACTION");//开启事务
$query=".....";
if(!mysql_query($query))
{
mysql_query('rollback');//失败了要回滚
}
$query="...";
if(!mysql_query($query))
{
mysql_query('rollback');//失败了要回滚
}
mysql_query('commit');//2个事件都成功了才真正提交
echo "ok";//显示ok
举个简单的例子,银行的自动转帐系统:需要从a帐户转帐 1000元到b帐户,首先从a帐户减去1000,然后给b帐户加1000,但是如果在加1000的过程中,发生了停电,怎么办呢?a帐户少了1000,但是b帐户却没有得到1000,这显然是错误的,理想的状况是,数据库取消当前进程中的所有操作,包括从a帐户取1000操作,这就需要用事务来实现,把这 2个过程当作一个事务,当所有操作都完成后,才把结果提交,如果在当中出现了什么问题,数据库返回到最开始的状态。
举个小例子,在php中应用事务:
mysql_query('SET AUTOCOMMIT=0');//取消数据库自动提交的功能
mysql_query("START TRANSACTION");//开启事务
$query=".....";
if(!mysql_query($query))
{
mysql_query('rollback');//失败了要回滚
}
$query="...";
if(!mysql_query($query))
{
mysql_query('rollback');//失败了要回滚
}
mysql_query('commit');//2个事件都成功了才真正提交
echo "ok";//显示ok