MySQL5的异常处理

赚钱中的小龙

赚钱中的小龙

2016-01-29 14:56

MySQL5的异常处理,MySQL5的异常处理

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

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

2. Sample Problem: Log Of Failures (2)

mysql CREATE TABLE t2

1 INT, PRIMARY KEY (s1))

engine=innodb;//

mysql CREATE TABLE t3 (s1 INT, KEY (s1),

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)

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 声明异常处理的语法

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)

DECLARE

{ EXIT | CONTINUE }

HANDLER FOR

展开更多 50%)
分享

猜你喜欢

MySQL5的异常处理

MySQL mysql数据库
MySQL5的异常处理

如何创建MySQL5的视图

编程语言 网络编程
如何创建MySQL5的视图

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MySQL5新特点(视图)

编程语言 网络编程
MySQL5新特点(视图)

MySQL5触发器教程

编程语言 网络编程
MySQL5触发器教程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MySQL5创建存储过程的示例

编程语言 网络编程
MySQL5创建存储过程的示例

MySQL5新特点(存储过程)

编程语言 网络编程
MySQL5新特点(存储过程)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

以文本方式上传二进制文件的PHP程序

以文本方式上传二进制文件的PHP程序

Mysql数据库常见的“#1251”錯誤分析

Mysql数据库常见的“#1251”錯誤分析
下拉加载更多内容 ↓