收藏本页
  帮助说明

  本站内容搜索:
   您的位置:素材中国>>教程 >>数据库 >>MySQL >>MySQL 5.0 新特性教程 存储过程:第四讲 提交错误报告
MySQL 5.0 新特性教程 存储过程:第四讲
[ 来源:素材中国 | 作者:mysql AB;翻译:陈朋奕| 时间:2005-11-26 12:45:17 | 浏览:人次 ]

 

  回顾:MySQL 5新特性教程 存储过程:第一讲  第二讲  第三讲

Error Handling 异常处理

  好了,我们现在要讲的是异常处理

1. Sample Problem: Log Of Failures 问题样例:故障记录

  当INSERT失败时,我希望能将其记录在日志文件中我们用来展示出错处理的问题样例是很
普通的。我希望得到错误的记录。当INSERT失败时,我想在另一个文件中记下这些错误的
信息,例如出错时间,出错原因等。我对插入特别感兴趣的原因是它将违反外键关联的约束

2. Sample Problem: Log Of Failures (2)

mysql> CREATE TABLE t2
s1 INT, PRIMARY KEY (s1))
engine=innodb;//
mysql> CREATE TABLE t3 (s1 INT, KEY (s1),
FOREIGN KEY (s1) REFERENCES t2 (s1))
engine=innodb;//
mysql> INSERT INTO t3 VALUES (5);//
...
ERROR 1216 (23000): Cannot add or update a child row: a foreign key
constraint fails(这里显示的是系统的出错信息)


  我开始要创建一个主键表,以及一个外键表。我们使用的是InnoDB,因此外键关联检查是打
开的。然后当我向外键表中插入非主键表中的值时,动作将会失败。当然这种条件下可以很
快找到错误号1216。

3. Sample Problem: Log Of Failures

CREATE TABLE error_log (error_message
CHAR(80))//


  下一步就是建立一个在做插入动作出错时存储错误的表。

4. Sample Problem: Log Of Errors

CREATE PROCEDURE p22 (parameter1 INT)
BEGIN

DECLARE EXIT HANDLER FOR 1216
INSERT INTO error_log VALUES
(CONCAT('Time: ',current_date,
'. Foreign Key Reference Failure For
Value = ',parameter1));
INSERT INTO t3 VALUES (parameter1);
END;//


  上面就是我们的程序。这里的第一个语句DECLARE EXIT HANDLER是用来处理异常的。意思是如果错误1215发生了,这个程序将会在错误记录表中插入一行。EXIT意思是当动作成功提交后退出这个复合语句。

5. Sample Problem: Log Of Errors

CALL p22 (5) //


  调用这个存储过程会失败,这很正常,因为5值并没有在主键表中出现。但是没有错误信息
返回因为出错处理已经包含在过程中了。t3表中没有增加任何东西,但是error_log表中记录
下了一些信息,这就告诉我们INSERT into table t3动作失败。


DECLARE HANDLER syntax 声明异常处理的语法

DECLARE
{ EXIT

 
 
       
 
   您的位置:素材中国>>教程 >>数据库 >>MySQL >>MySQL 5.0 新特性教程 存储过程:第四讲
 点此在百度搜索关键字"MySQL5"  点此在GOOGLE搜索关键字"MySQL5"
热门文章:
  ·mysql5中遇到的字符集问题以及解决办法   ·sql server分布式事务解决方案
  ·MySQL安装与使用   ·Mysql数据库学习心得(1)
  ·SQL各种写法的效率问题   ·JTDS连接SQL Server中的方法示例
  ·Windows Vista下安装SQL Server 2005   ·基于MySQL的数据库集群系统的实现
  ·MySQL怎样优化WHERE子句   ·影响SQLServer性能的关键

  首页  素材图片  高精图库  矢量图库  网页素材  网页模板  壁纸  明星  下载  教程  字体  论坛

网站介绍 | 广告业务 | 设计业务 | 免责声明 | 版权声明 | 联系我们|提交错误报告
素材中国版权所有