1、DECLARE EXIT HANDLER FOR SQLEXCEPTION 语句后面可以跟一个 begin end的复合语句块,也可以直接跟一个简单语句例如 :DECLARE EXIT HANDLER FOR SQLEXCEPTION v_succ=0;
2、EXIT会在执行异常后执行执行 FOR SQLEXCEPTION 后的语句或块而整个停止下来;CONTINUE选项会在异常后继续执行,从而将id为2的记录写入到数据库中。
3、事务中请不要使用 create table等会执行隐式事务提交的命令,否则在会导致隐式提交事务,而不会回滚操作。

DROP PROCEDURE IF EXISTS p_test;
delimiter //
CREATE PROCEDURE p_test(OUT v_succ tinyint)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN-- 这里可以用语句块,也可以直接一个语句ROLLBACK;
END;
SET v_succ=0;
START TRANSACTION;
-- 如果这里写入 insert语句,然后又执行了create table语句,那么回滚事务只能对create table以后的语句生效INSERT INTO tb_test (id) VALUES (1);SIGNAL SQLSTATE '45001' SET MYSQL_ERRNO=2000,MESSAGE_TEXT='故意触发异常';INSERT INTO tb_test (id) VALUES (2);
COMMIT;
SET v_succ=1;
END;//
delimiter ;

转载于:https://www.cnblogs.com/sdlz/p/8901697.html

MYSQL存储过程中事务和DECLARE EXIT/CONTINUE HANDLER的使用相关推荐

  1. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  2. mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  3. MySQL存储过程之事务管理

    MySQL存储过程之事务管理 ACID:Atomic.Consistent.Isolated.Durable  存储程序提供了一个绝佳的机制来定义.封装和管理事务. 1,MySQL的事务支持  MyS ...

  4. mysql扩展中如何处理结果集_我们如何处理MySQL存储过程中的结果集?

    我们可以使用游标来处理存储过程中的结果集.基本上,游标允许我们迭代查询返回的一组行并相应地处理每一行. 为了演示在MySQL存储过程中CURSOR的用法,我们基于以下名为" student_ ...

  5. MySQL存储过程中的3种循环

    MySQL存储过程中的3种循环 在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易 ...

  6. linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

    中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...

  7. mysql 存储过程中 if else的使用 和赋值方式

    mysql 存储过程中 if else的使用 和赋值方式 在mysql 中顶一个变量的语法 DECLARE variable_name datatype(size) DEFAULT default_v ...

  8. mysql存储过程中as_Mysql存储过程中的delimiter

    这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...

  9. mysql 存储过程中limit

    mysql 存储过程中limit 1.mysql的高版本(5.5),存储过程中的limit可以使用变量,如下:select * from student limit iStart,iNum; 2.my ...

最新文章

  1. JVM 性能调优之定位问题 实战篇
  2. python爬虫必会的23个项目
  3. java代码杨辉三角_用java实现杨辉三角的示例代码
  4. 一个c#开发的web绘流系统
  5. JQuery 方法查询大全
  6. 【itext学习之路】--5.对pdf进行盖章/签章/数字签名
  7. bootstraptable中responsehandle获取数据缺失_Python中的向量化字符串操作
  8. js检测密码强度的功能实现逻辑思路及实例
  9. 了解.Net Remoting从基础开始
  10. Java之JVM调优案例分析与实战(5) - 服务器JVM进程奔溃
  11. java arraylist 添加对象_如何在Java中将对象添加到ArrayList
  12. IIS5 IIS6 IIS7区别
  13. Android 中 shape 各种属性详细介绍
  14. 应用程序正常初始化失败(0xc0000135)
  15. Python核心编程的四大神兽:迭代器、生成器、闭包以及装饰器
  16. CorelDRAW X8 /CDR2020官方序列号密钥下载矢量绘图软件
  17. 单细胞测序之scater包数据分析教程复现
  18. LeetCode久不久来一题系列之Add Two Numbers
  19. 项目管理中的进度控制与目标计划
  20. ​【​观察】云栖大会共话JDM模式 揭秘创新背后的价值和启示

热门文章

  1. 使用 ‘In Place’ 直接从MySQL 5.0升级至5.7
  2. Kali渗透测试——netdiscover
  3. python \uxxxx转中文,Python列表中的字典 \uxxxx转中文,
  4. Linux 网络配置 ifconfig、ip、netstat 命令的使用
  5. 在服务器群集节点安装DHCP服务
  6. 微软3月补丁星期二修复71个漏洞,其中3个是0day
  7. Control Web Panel 中两个严重漏洞使Linux 服务器易受RCE攻击
  8. 西门子修复热门 CAD 库中的多个代码执行高危漏洞
  9. 微软WIP漏洞奖励计划新增基于攻击场景的奖励类别,最高$10万
  10. 开源的无客户端桌面远程网关 Apache Guacamole 被曝多个严重漏洞,可导致 RCE