MYSQL EXCEPTION HANDLER 作用域与优先级

作用域:

 

1、包括begni..end;内的语句

DECLARE CONTINUE HANDLER FOR 1048 SELECT 'Attempt to insert a null value';
BEGIN
    INSERT INTO a  VALUES (6,NULL);
END;
若a表第二字段定义为非空,则会触发1048错误

2、若错误处理在begin..end内定义,则在之外的语句不会触发错误发生

BEGIN
    BEGIN
       DECLARE CONTINUE HANDLER FOR 1216 select
                'Foreign key constraint violated';
    END;
    INSERT INTO departments (department_name,manager_id,location)
         VALUES ('Elbonian HR','Catbert','Catbertia');
END;
3、能够捕获其它存储过程抛出的错误

 

优先级:

 

在一个begin...end块中可以定义多个handler,来分别处理不同的异常。例如:

declare   exit  handler  for  sqlexception
    
begin
      
select   ' error ' ;
    
end ;
      
DECLARE   continue  HANDLER  FOR  SQLSTATE  ' 02000 '   SET  done  =   1 ;

 处理的优先级是:

MySQL Error code > SQLSTATE code > 命名条件
MySQL error code,如1062  
ANSI标准SQLSTATE code,如23000 
命名条件,如NOT FOUND 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值