CREATE PROCEDURE sp_ee()
BEGIN
#--------------------
#SQLEXCEPTION 对应存储过程执行中所有异常
#@Auth:lzw
#@time:2014/8/21
#--------------------
#标志是否出错
DECLARE errno TINYINT DEFAULT '0';
#如sql异常,将errno设置为1且后续执行退出
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK;SET errno = 1; END;
#开启事务
START TRANSACTION;
INSERT INTO tb_mv(name,url)VALUES('1','1'),('2','2'),('3','3'); #执行
INSERT INTO tb_mv VALUES(1,'wwwww','222','222',1);##id为1,违反主键约束
#errno为1,事务回滚sql
SELECT errno;
END;
##执行存储过程
CALL sp_ee();
如果有更好的回滚机制,请分享