在Mysql存儲(chǔ)過(guò)程中使用事務(wù)實(shí)例
CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int)
BEGIN
#Routine body goes here...
DECLARE flag int DEFAULT parameter1;#聲明變量flag,將參數(shù)值賦給該變量
DECLARE uuidStr VARCHAR(32);#聲明一個(gè)長(zhǎng)度為32位的字符串
DECLARE currentTime TIMESTAMP;#聲明一個(gè)類型為時(shí)間戳的變量
declare err INT default 0;#聲明一個(gè)整形變量err,默認(rèn)值是0
declare continue handler for sqlexception set err=1;#當(dāng)sqlexception handler捕捉到異常時(shí),設(shè)置err=1
START TRANSACTION;#開(kāi)始事務(wù)
WHILE flag>0 DO #注意: while不能空實(shí)現(xiàn)(在while塊中,里面必須有語(yǔ)句)
#uuid()函數(shù)得到的字符串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除里面的-,得到一個(gè)32位的字符串
SET uuidStr = REPLACE(UUID(),'-','') ;
#得到當(dāng)前的時(shí)間
SET currentTime = CURRENT_TIMESTAMP();
#執(zhí)行插入語(yǔ)句,注意連接字符串的函數(shù)concat(str1,str2,...);其中str..也可以是數(shù)字類型
INSERT INTO
表名稱
(id,title,keyword,hasImage,isTodayHead,isShowInHome,isBigness,publishTime,originId,modify_time,isAnalysis)
VALUE
(uuidStr,CONCAT('事件標(biāo)題',flag),CONCAT('關(guān)鍵字',flag),1,1,0,0,currentTime,CONCAT('xxxxxxx',flag),currentTime,1);
#每循環(huán)一次,flag要減去1,注意沒(méi)有flag--的語(yǔ)法
set flag = flag-1;
#在這里測(cè)試當(dāng)err=1時(shí),事務(wù)是否有了回滾,測(cè)試ok
#IF flag=7 THEN #注意在procedure中給變量賦值要用到set,或在變量聲明時(shí)用default來(lái)父子,所以=號(hào)可以用來(lái)比較兩邊的值是否相等,<=>也可,區(qū)別先不去糾結(jié)。
#set err=1;
#END if;
END WHILE;
IF (err=0) THEN
commit;
select 'OK';
ELSE
rollback;
select 'err';
END IF;
END;
相關(guān)文章
關(guān)于useSSL=false和true的區(qū)別及說(shuō)明
這篇文章主要介紹了關(guān)于useSSL=false和true的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08MySQL8.0實(shí)現(xiàn)窗口函數(shù)計(jì)算同比環(huán)比
本文主要介紹了MySQL8.0實(shí)現(xiàn)窗口函數(shù)計(jì)算同比環(huán)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06MySQL 中 blob 和 text 數(shù)據(jù)類型詳解
本文主要介紹了MySQL中blob和text數(shù)據(jù)類型詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02