mysql 存储过程(支持事务管理)
2024-09-01 18:40:06
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;
最新文章
- 你知道url中的特殊符号含义么
- ssh An internal error occured during ";Add Deployment";
- EmguCV 阈值化
- redis缓存怎么存储对象
- Android 杂记 - 存货盘点用的客户端
- commonJS — 事件处理(for Event)
- 安装JAVA JDK注意事项
- QT使用BC技术(网页与桌面结合)开发程序,好多相关链接(寒山居士)
- JAVA中使用JSONObject对象必备
- C# Web.config配置
- 第4天:JS入门-给div设置宽高背景色
- CLR 简介
- Appium 在Win7环境下搭建
- Inside a low budget consumer hardware espionage implant
- Linux故障:linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME=";eth0";。
- oracle备份信息查询
- AT91RM9200---电源管理控制器(PMC)介绍
- go语言爬虫 - TapTap用户都喜欢些什么游戏
- Netty编解码技术
- 腾讯 深圳 25928-PHP开发工程师(深圳)