一、这个是按照自己的设置,设为1,然后继续往下走
参数:out error int
BEGIN
DECLARE o INT;
declare err int default 0;
/*如果出现sql异常,则将err设置为1后继续执行后面的操作 */
declare continue handler for sqlexception set err=1; -- 出错处理
set autocommit = 0; //0的时候自动提交
insert into product(name) values(1);
INSERT into product(name) values(3); //外键不存在3,所以会报错
if err=1 THEN
//设置为1,继续下面的操作
ROLLBACK;
set error =0; //设一个输出的参数,为了页面展示用
else
commit;
end if;
select max(id) from product where age=b into error; //没问题才继续处理这里的
#select * from product where id=o; //这里就不在设置输出参数了,按照列数来说会很多out参数,java端直接遍历反而简单
END
二、报错就直接回滚
BEGIN
//注意外面是一个begin,
declare exit handler for sqlexception
BEGIN
//里面也还有一个begin
ROLLBACK;
END;
START TRANSACTION; //开始事务
insert into product(name) values(1);
INSERT into product(name) values(2); //如果是3,外键不存在会报错,下面的out输出参数error什么也不会显示
set error=0;
COMMIT;
END