码迷,mamicode.com
首页 > 其他好文 > 详细

二十、异常捕获及处理详解

时间:2019-11-01 11:11:02      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:tab   select查询   更新   通过   update   primary   javac   操作   create   

代码中被[]包含的表示可选,|符号分开的表示可选其一。

需求背景

我们在写存储过程的时候,可能会出现下列一些情况:

  1. 插入的数据违反唯一约束,导致插入失败

  2. 插入或者更新数据超过字段最大长度,导致操作失败

  3. update影响行数和期望结果不一致

遇到上面各种异常情况的时,可能需要我们能够捕获,然后可能需要回滚当前事务。

本文主要围绕异常处理这块做详细的介绍。

此时我们需要使用游标,通过游标的方式来遍历select查询的结果集,然后对每行数据进行处理。

本篇内容

  • 异常分类详解

  • 内部异常详解

  • 外部异常详解

  • 掌握乐观锁解决并发修改数据出错的问题

  • update影响行数和期望结果不一致时的处理

准备数据

  /*建库javacode2018*/
  drop database if exists javacode2018;
  create database javacode2018;

  /*切换到javacode2018库*/
  use javacode2018;

  DROP TABLE IF EXISTS test1;
  CREATE TABLE test1(a int PRIMARY KEY);

异常分类

  我们将异常分为mysql内部异常和外部异常

  mysql内部异常

  当我们执行一些sql的时候,可能违反了mysql的一些约束,导致mysql内部报错,如插入数据违反唯一约束,更新数据超时等,此时异常是由mysql内部抛出的,我们将这些由mysql抛出的异常统称为内部异常。

  外部异常

  当我们执行一个update的时候,可能我们期望影响1行,但是实际上影响的不是1行数据,这种情况:sql的执行结果和期望的结果不一致,这种情况也我们也把他作为外部异常处理,我们将sql执行结果和期望结果不一致的情况统称为外部异常。

Mysql内部异常

  示例1

test1表中的a字段为主键,我们向test1表同时插入2条数据,并且放在一个事务中执行,最终要么都插入成功,要么都失败。

  创建存储过程:

二十、异常捕获及处理详解

标签:tab   select查询   更新   通过   update   primary   javac   操作   create   

原文地址:https://www.cnblogs.com/biao/p/11775774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!