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

2022-11-12 09:34:29
内容摘要
这篇文章主要为大家详细介绍了在MySQL存储过程中使用事务实例,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技术笔记! 代码如下: CREATE DEFIN
文章正文

这篇文章主要为大家详细介绍了在MySQL存储过程中使用事务实例,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

代码如下:


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存储过程中使用事务实例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!