在Mysql存儲過程中使用事務(wù)實例
CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int)
BEGIN
#Routine body goes here...
DECLARE flag int DEFAULT parameter1;#聲明變量flag,將參數(shù)值賦給該變量
DECLARE uuidStr VARCHAR(32);#聲明一個長度為32位的字符串
DECLARE currentTime TIMESTAMP;#聲明一個類型為時間戳的變量
declare err INT default 0;#聲明一個整形變量err,默認值是0
declare continue handler for sqlexception set err=1;#當(dāng)sqlexception handler捕捉到異常時,設(shè)置err=1
START TRANSACTION;#開始事務(wù)
WHILE flag>0 DO #注意: while不能空實現(xiàn)(在while塊中,里面必須有語句)
#uuid()函數(shù)得到的字符串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除里面的-,得到一個32位的字符串
SET uuidStr = REPLACE(UUID(),'-','') ;
#得到當(dāng)前的時間
SET currentTime = CURRENT_TIMESTAMP();
#執(zhí)行插入語句,注意連接字符串的函數(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,注意沒有flag--的語法
set flag = flag-1;
#在這里測試當(dāng)err=1時,事務(wù)是否有了回滾,測試ok
#IF flag=7 THEN #注意在procedure中給變量賦值要用到set,或在變量聲明時用default來父子,所以=號可以用來比較兩邊的值是否相等,<=>也可,區(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)文章
MySQL?Flink實時流處理的核心技術(shù)之窗口機制
Flink是一款流處理框架,窗口機制是其核心技術(shù)之一。Flink的窗口機制可以將無限的數(shù)據(jù)流劃分為有限的窗口,并對窗口內(nèi)的數(shù)據(jù)進行處理。Flink的窗口機制支持時間、計數(shù)、會話等多種窗口類型,并且可以在不同的窗口之間進行流轉(zhuǎn)換和數(shù)據(jù)聚合,是實時流處理中非常重要的技術(shù)2023-05-05
MySQL安裝時initializing database失敗的問題解決
本文主要介紹了MySQL安裝時initializing database失敗的問題解決,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
避免MySQL中的隱式轉(zhuǎn)換的方法小結(jié)
在 MySQL 中,隱式轉(zhuǎn)換可能導(dǎo)致索引失效、結(jié)果不符合預(yù)期或性能問題,以下是避免隱式轉(zhuǎn)換的具體方法,從表設(shè)計、查詢編寫到配置優(yōu)化,逐步減少隱式轉(zhuǎn)換的發(fā)生,具體操作過程跟隨小編一起看看吧2025-04-04

