在Mysql存储过程中使用事务实例

 更新时间:2014年04月22日 12:58:02   作者:  
这篇文章主要介绍了在Mysql存储过程中使用事务实例,需要的朋友可以参考下

复制代码 代码如下:

CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int)
BEGIN
    #Routine body goes here...
    DECLARE flag int DEFAULT parameter1;#声明变量flag,将参数值赋给该变量
    DECLARE uuidStr VARCHAR(32);#声明一个长度为32位的字符串
    DECLARE currentTime TIMESTAMP;#声明一个类型为时间戳的变量

    declare err INT default 0;#声明一个整形变量err,默认值是0
    declare continue handler for sqlexception set err=1;#当sqlexception handler捕捉到异常时,设置err=1

    START TRANSACTION;#开始事务

    WHILE flag>0 DO #注意: while不能空实现(在while块中,里面必须有语句)

        #uuid()函数得到的字符串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除里面的-,得到一个32位的字符串
        SET uuidStr = REPLACE(UUID(),'-','') ;
        #得到当前的时间
        SET currentTime = CURRENT_TIMESTAMP();
        #执行插入语句,注意连接字符串的函数concat(str1,str2,...);其中str..也可以是数字类型
        INSERT INTO
                                表名称
                                (id,title,keyword,hasImage,isTodayHead,isShowInHome,isBigness,publishTime,originId,modify_time,isAnalysis)
                     VALUE
                                (uuidStr,CONCAT('事件标题',flag),CONCAT('关键字',flag),1,1,0,0,currentTime,CONCAT('xxxxxxx',flag),currentTime,1);
        #每循环一次,flag要减去1,注意没有flag--的语法
        set flag = flag-1;

        #在这里测试当err=1时,事务是否有了回滚,测试ok
        #IF flag=7 THEN   #注意在procedure中给变量赋值要用到set,或在变量声明时用default来父子,所以=号可以用来比较两边的值是否相等,<=>也可,区别先不去纠结。
                #set err=1;
        #END if;
    END WHILE;

    IF (err=0) THEN
        commit;
        select 'OK';
     ELSE
        rollback;
        select 'err';
     END IF;

END;

相关文章

  • mysql回表查询是什么,回表查询的使用

    mysql回表查询是什么,回表查询的使用

    这篇文章主要介绍了mysql回表查询是什么,回表查询的使用方式,具有很好的参考价值,希望对大家有所帮助。
    2022-11-11
  • MySQL判断空值的三种方法

    MySQL判断空值的三种方法

    在创建表时,可以指定的列是否可以不包含值,如果在一个列不包含值,则其称其为空值NULL,NULL一个特殊值,代表缺失的值或者不适用的情况,表示未知数据,本文给大家介绍了MySQL判断空值的三种方法,需要的朋友可以参考下
    2024-03-03
  • MySQL 5.7双主同步部分表的实现过程详解

    MySQL 5.7双主同步部分表的实现过程详解

    这篇文章主要给大家介绍了关于MySQL 5.7双主同步部分表实现的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • MySQL Flink实时流处理的核心技术之窗口机制

    MySQL Flink实时流处理的核心技术之窗口机制

    Flink是一款流处理框架,窗口机制是其核心技术之一。Flink的窗口机制可以将无限的数据流划分为有限的窗口,并对窗口内的数据进行处理。Flink的窗口机制支持时间、计数、会话等多种窗口类型,并且可以在不同的窗口之间进行流转换和数据聚合,是实时流处理中非常重要的技术
    2023-05-05
  • mysql大批量插入数据的正确解决方法

    mysql大批量插入数据的正确解决方法

    这篇文章主要介绍了mysql大批量插入数据的正确做法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • sysbench-0.4.12编译安装和CPU测试例子分享

    sysbench-0.4.12编译安装和CPU测试例子分享

    这篇文章主要介绍了sysbench-0.4.12编译安装和CPU测试例子分享,本文还包含安装过程中的错误及解决方法,使用时的错误和解决方法,需要的朋友可以参考下
    2014-07-07
  • MySQL安装时initializing database失败的问题解决

    MySQL安装时initializing database失败的问题解决

    本文主要介绍了MySQL安装时initializing database失败的问题解决,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • 避免MySQL中的隐式转换的方法小结

    避免MySQL中的隐式转换的方法小结

    在 MySQL 中,隐式转换可能导致索引失效、结果不符合预期或性能问题,以下是避免隐式转换的具体方法,从表设计、查询编写到配置优化,逐步减少隐式转换的发生,具体操作过程跟随小编一起看看吧
    2025-04-04
  • MySQL使用的常见问题解决与应用技巧汇总

    MySQL使用的常见问题解决与应用技巧汇总

    这篇文章主要给大家总结介绍了我们平时在使用MySQL遇到的常见问题解决与应用技巧的相关资料,包括忘记MySQL的root密码、如何处理 myisam 存储引擎的表损坏、数据目录磁盘空间不足的问题等等问题,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-11-11
  • MySQL 丢失数据的原因及解决

    MySQL 丢失数据的原因及解决

    这篇文章主要介绍了MySQL 丢失数据的原因及解决,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-05-05

最新评论