浅析Mysql 数据回滚错误的解决方法 |
本文标签:mysql,数据回滚 MYSQL的事务处理pps两种方法 。 2、直接用set来改变mysql的自动提交模式 当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束 。 方法如下: 复制代码 代码如下: /*************** transaction--1 ***************/ $conn = mysql_connect(localhost,root,root) or die ("数据连接错误!!!"); mysql_select_db(test,$conn); mysql_query("set names GBK"); //使用GBK中文编码; //开始一个事务 mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION"); $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, test1, 0)"; $sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, test1, 0)";//这条我故意写错 $res = mysql_query($sql); $res1 = mysql_query($sql2); if($res && $res1){ mysql_query("COMMIT"); echo 提交成功 。; }else{ mysql_query("ROLLBACK"); echo 数据回滚 。; } mysql_query("END"); /*方法二*/ 复制代码 代码如下: /**************** transaction--2 *******************/ mysql_query("SET AUTOCOMMIT=0"); //设置mysql不自动提交,需自行用commit语句提交 $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, test1, 0)"; $sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, test1, 0)";//这条我故意写错 $res = mysql_query($sql); $res1 = mysql_query($sql2); if($res && $res1){ mysql_query("COMMIT"); echo 提交成功 。; }else{ mysql_query("ROLLBACK"); echo 数据回滚 。; } mysql_query("END"); //事务处理完时别忘记mysql_query("SET AUTOCOMMIT=1");自动提交 |