如果执行了第一个sql语句时,由于某些原因,第二个没有执行
此时希望,第一个回滚,
具体怎么写啊,我试了几次都不会滚啊?请兄弟姐妹们帮忙啊?$sqlchu="update money set amount =amount-".$nn." where username='zhang'";  //第一个
$sqlchu="update money set amount =amount+".$nn." where username='wu'";   //第二个
数据表
CREATE TABLE `money` (
  `id` int(4) NOT NULL auto_increment,
  `amount` int(8) NOT NULL,
  `username` varchar(32) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=gb2312 AUTO_INCREMENT=4 ;
INSERT INTO `money` VALUES (1, 100, 'zhang');
INSERT INTO `money` VALUES (2, 100, 'wu');

解决方案 »

  1.   

    只有INNODB引擎支持事务处理。<?phpmysql_connect("localhost", "root", "123456") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("test");mysql_query("START TRANSACTION");
    //mysql_query("SET AUTOCOMMIT=0");$nn=1;
    $sql_1="update money set amount =amount-".$nn." where username='zhang'";  //第一个
    $result_1 = mysql_query($sql_1);//这里故意写错
    $sql_2="update money set amount .=amount+".$nn." where username='wu'";   //第二个$result_2 = mysql_query($sql_2);
    if (!$result_2)
    {
    mysql_query("ROLLBACK");
    }
    else
    {
    mysql_query("COMMIT");
    }?>
      

  2.   

    INNODB引擎是怎么回事呢?
    我按照1楼的说法,试了,
    结果还是第一个sql语句执行了,
    第二个没哟执行啊,
      

  3.   

    CREATE TABLE `money` (
      `id` int(4) NOT NULL auto_increment,
      `amount` int(8) NOT NULL,
      `username` varchar(32) NOT NULL,
      PRIMARY KEY  (`id`)
    ENGINE=InnoDBDEFAULT CHARSET=gb2312 AUTO_INCREMENT=4 ;