先收集网上的一些,待仔细测试研究~~
事务是数据库更新操作的基本单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销。
所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作 单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。 简单举个例子就是你要同时修改数据库中两个不同表的时候,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改的情 况下,就只有第二个表回到未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事务的时候,当第一个表修改完,可是第二表改修出现了异常 而没能修改的情况下,第一个表和第二个表都要回到未修改的状态!这就是所谓的事务回滚。 数据库事务是由一组 SQL 语句组成的一个逻辑工作单元。您可以把事务看作是一组不可分的 SQL 语句,这些语句作为一个整体永久记录在数据库中或一并撤销。比如在银行帐户之间转移资金:一条 UPDATE语句将从一个帐户的资金总数中减去一部分,另一条 UPDATE语句将把资金加到另一个帐户中。减操作和加操作必须永久记录在数据库中,或者必须一并撤销 ? 否则将损失资金。这个简单的示例仅使用了两条 UPDATE 语句,但一个更实际的事务可能包含许多 INSERT、UPDATE和 DELETE 语句
- $mysqli->autocommit(false);
- if(false){
- $mysqli->rollback();
- }else{
- $mysqli->commit();
- }
- mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");
- $sql = "INSERT INTO ...";
- $sql2 = "INSERT INTO ...";
- $res = mysql_query($sql);
- $res1 = mysql_query($sql2);
- if(res1){
- mysql_query("COMMIT");
- echo '提交成功。';
- }else{
- mysql_query("ROLLBACK");
- echo '数据回滚。';
- }
- mysql_query("END");
本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/903634,如需转载请自行联系原作者