mysql事务的回滚
1、登录mysql,在test数据库中新建一个表,输入数据:
Create Table
CREATE TABLE `shoufei` ( `id` int(11) NOT NULL AUTO_INCREMENT, `shijian` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `xiangmu` varchar(20) NOT NULL, `jiage` float NOT NULL, `shuliang` int(11) NOT NULL, `jine` float DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

2、在test数据库中建立一个“shiwu”的过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `shiwu`()
BEGIN
END$$

3、在过程中定义sql语句的异常处理,如果发生异常就回滚到以前数据,并且退出当前语句块(begin end)。
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;

4、过程开始事务:START TRANSACTION;

5、在事务中把id=2的记录修改为id=1,主键唯一性会产生错误,直接退出begin-end.
UPDATE shoufei SET id=1 WHERE id=2;

6、接下来提交事务,如果提交成功换回一个结果集'提交成功!',:
COMMIT;
SELECT '提交成功!';
7、执行过程:call shiwu();
修改数据时有错误,sql异常执行回滚ROLLBACK。


8、把修改数据改为:
UPDATE shoufei SET id=6 WHERE id=2;

9、再执行过程,事务成功执行,把id改为6.

