示例
DELIMITER $$ DROP PROCEDURE IF EXISTS sp_test1 $$ CREATE PROCEDURE sp_test1() top:BEGIN -- 错误标记,当sql执行出错的时候,设置标记等于1。 DECLARE _err INT DEFAULT 0; -- 错误标记处理,放到最后再声明,要放到游标后面。 -- 不然会报错:Variable or condition declaration after cursor or handler declaration DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1; -- 开始事务 START TRANSACTION; -- 执行任意sql语句,如果执行的sql语句任何一个发生异常(比如主键重复),则_err都会被设置为1。 INSERT INTO stu(id,first_name,birth)SELECT 1,'a',NOW(); -- 判断异常状态,回滚和提交。 IF(_err = 1) THEN ROLLBACK; ELSE COMMIT; END IF; END $$ DELIMITER ;
标签:回滚,err,--,MySql,sql,异常 From: https://www.cnblogs.com/xsj1989/p/17774735.html