如果执行了第一个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');
此时希望,第一个回滚,
具体怎么写啊,我试了几次都不会滚啊?请兄弟姐妹们帮忙啊?$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');
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");
}?>
我按照1楼的说法,试了,
结果还是第一个sql语句执行了,
第二个没哟执行啊,
`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 ;