mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破

这一节课,沈老师带我们了解事务的异常

  什么是异常?

  我们先插入一组数据:

insert into user_balance(user_id,user_money) values (3,10.5);

  这个是正常的。但是我们把插入的user_money的值故意弄错:如下

insert into user_balance(user_id,user_money) values (3,‘abc’);

  那么我们会得到一个ERR

  

.

  这个错误是如果报出来的呢?老师直接用工具新建一个存储过程来给我们演示: 

BEGIN
	start TRANSACTION;
	insert into user_balance(user_id,user_money) values(2,22;)

END;

   按上面的存储过程,我们随便如何CALL,都不会插入数据。必须显式的写上COMMIT,数据才会被插入。

BEGIN
	start TRANSACTION;	#开启事务
	insert into user_balance(user_id,user_money) values(2,22);
	COMMIT;
END

   老师演示错误的示范,我这里就不记录了。

下面来说说自定义异常处理:

格式:declare XXX1 handler for xxx2 执行sql;

  XXX1有continue 和 exit 还有 undo。

  XXX2有 sqlstate、sqlwarning、notfound、sqlexception

  显式错误的命令:

show errors #显式最后一个执行语句所产生的错误

  例如:

BEGIN
    
    declare CONTINUE HANDLER FOR SQLEXCEPTION show errors;
    insert into user_balance(user_id,user_money) values(4,‘aaa’); #错误执行
    insert into user_balance(user_id,user_money) values(4,24); #能够执行
END

  今天自定义异常处理课程例子:

  

 

  

posted @ 2016-08-08 23:20  前进的卒子  阅读(780)  评论(0编辑  收藏  举报