DELIMITER $$
DROP PROCEDURE IF EXISTS test_sp1 $$
CREATE PROCEDURE test_sp1( )
BEGIN
DECLARE t_error INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; START TRANSACTION;
UPDATE `testdb`.`t_student` SET `stu_name` = '哈哈9' WHERE `id` = 9;
UPDATE `testdb`.`t_student` SET `stu_name` = '哈哈10' WHERE `id` = 10;
UPDATE `testdb`.`t_student` SET `stu_name` = '哈哈11' WHERE `id` = 11;
IF t_error = 1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
SELECT t_error;
END$$
CALL test_sp1( );

说明 :

DELIMITER $$ 使用DELIMITER关键字来重新定义命令结束符,默认的命令结束符为分号';'(也就是原先是键入;之后再回车,命令会执行,现在是键入$$之后命令会执行)
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;  创建一个sql异常处理器,只要发生异常就将t_error的值置为1
START TRANSACTION;    开启事务  (在存储过程中只能使用start transaction来开启事务,不能使用begin,因为mysql会自动将begin识别为begin...end)
IF t_error = 1 THEN 
ROLLBACK;
ELSE
COMMIT;
END IF; 通过判断t_error的值来看是否发生过sql异常,从而来决定是提交事务还是来回滚事务
SELECT t_error;    查看t_error的值
CALL test_sp1( );  调用刚刚定义的存储过程 
 
 
 

MySql使用存储过程实现事务的提交或者回滚的更多相关文章

  1. MySql数据库事务正常提交,回滚失败

    问题:在初次练习Mysql数据库事务时,事务正常提交,但是在遇到异常应当回滚时,回滚失败. 代码如下: //2.更新操作. public void update(Connection conn, St ...

  2. 如何在mysql下实现事务的提交与回滚

    最近要对数据库的数据进行一个定时迁移,为了防止在执行过程sql语句因为某些原因报错而导致数据转移混乱,因此要对我们的脚本加以事务进行控制. 首先我们建一张tran_test表 CREATE TABLE ...

  3. JFinal 数据库“手动”事务(提交、回滚)

    一.用注解 @Before(Tx.class) 实现 事务回滚 @Before(Tx.class) public void pay() throws Exception { //throws exce ...

  4. JDBC03 利用JDBC实现事务提交与回滚【调用Connection中的方法实现事务管理】

    目录 1 Connection中的重用方法 2 JDBC事务管理经典案例 1 Connection类中常用的方法回顾 1.1 Statement createStatement() throws SQ ...

  5. J2EE分布式事务中的提交、回滚方法调用异常。

    这个是昨天上班的时候,写一个后台程序的调试程序时碰到的问题,和项目经理纠结了一天,最后搞定了.于是今天上班正好闲着,花了几乎一天的时间去网上找各种相关的资料.目前了解的内容如此: 根据使用的weblo ...

  6. RocketMQ源码分析之RocketMQ事务消息实现原下篇(事务提交或回滚)

    摘要: 事务消息提交或回滚的实现原理就是根据commitlogOffset找到消息,如果是提交动作,就恢复原消息的主题与队列,再次存入commitlog文件进而转到消息消费队列,供消费者消费,然后将原 ...

  7. 【转】批量复制操作(SqlBulkCopy)的出错处理:事务提交、回滚

    原文地址:http://blog.csdn.net/westsource/article/details/6658109 默认情况下,批量复制操作作为独立的操作执行. 批量复制操作以非事务性方式发生, ...

  8. 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚

    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...

  9. BAPI总的数据库提交和回滚

    BAPI事物中的数据提交和回滚必须通过调用SAP标准业务对象BAPI SERVICE(对象类型SAP0001)的BAPI方法bapiservic.transactioncommit和bapiservi ...

随机推荐

  1. OSS Android SDK

    Android SDK开发包(2014-12-20)  版本号0.2.2   开发包下载地址: http://oss.aliyuncs.com/aliyun_portal_storage/help/o ...

  2. ZJOI2007仓库建设

    斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <s ...

  3. webpack3中使用postcss-loader和autoprefixer给css3样式添加浏览器兼容

    1.在webpack中需要处理css必须先安装如下两个loader npm install --save-dev css-loader style-loader 2.要处理sass和添加浏览器前缀需要 ...

  4. HiveQL DML 常用QL示例资料

    hive 2.1.1  DML操作 将文件加载到hive表 //官方指导 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tabl ...

  5. JBox使用详解

    插件说明 - jBox 是一款基于 jQuery 的多功能对话框插件,能够实现网站的整体风格效果,给用户一个新的视觉享受. 运行环境 - 兼容 IE6+.Firefox.Chrome.Safari.O ...

  6. 洛谷 P1564 膜拜

    题目出处 s[i]表示前i个人对神牛的膜拜情况,如果膜拜神牛甲则s[i]=s[i-1]+1否则s[i]=s[i-1]-1.那么如果|s[i]-s[j]|<=m或者=i-j+1(也就是人数差不超过 ...

  7. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  8. 纯css3打造瀑布流布局

    纯css3打造瀑布流布局 原理: 1.column-count 把div中的文本分为多少列 2.column-width 规定列宽 3.column-gap 规定列间隙 4.break-inside: ...

  9. MongoDB3.6之Replica Set初步体验

    Replica Set在国内叫做副本集,简单来说就是一份数据在多个地方存储.         1.为什么要用副本集,什么时候使用副本集?   有人说一份数据在多个地方存储占用了大量的额外空间,是一种浪 ...

  10. Centos网口流量实时监控

    iptraf方式 [root@kazihuo ~]# yum -y install iptraf [root@kazihuo ~]# iptraf-ng-ng 开启服务日志: 进入细节监控后提示日志路 ...