在Mysql存儲(chǔ)過程中使用事務(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è)長度為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;#開始事務(wù)
WHILE flag>0 DO #注意: while不能空實(shí)現(xiàn)(在while塊中,里面必須有語句)
#uuid()函數(shù)得到的字符串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除里面的-,得到一個(gè)32位的字符串
SET uuidStr = REPLACE(UUID(),'-','') ;
#得到當(dāng)前的時(shí)間
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;
#在這里測(cè)試當(dāng)err=1時(shí),事務(wù)是否有了回滾,測(cè)試ok
#IF flag=7 THEN #注意在procedure中給變量賦值要用到set,或在變量聲明時(shí)用default來父子,所以=號(hào)可以用來比較兩邊的值是否相等,<=>也可,區(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 5.7雙主同步部分表的實(shí)現(xiàn)過程詳解
這篇文章主要給大家介紹了關(guān)于MySQL 5.7雙主同步部分表實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
MySQL?Flink實(shí)時(shí)流處理的核心技術(shù)之窗口機(jī)制
Flink是一款流處理框架,窗口機(jī)制是其核心技術(shù)之一。Flink的窗口機(jī)制可以將無限的數(shù)據(jù)流劃分為有限的窗口,并對(duì)窗口內(nèi)的數(shù)據(jù)進(jìn)行處理。Flink的窗口機(jī)制支持時(shí)間、計(jì)數(shù)、會(huì)話等多種窗口類型,并且可以在不同的窗口之間進(jìn)行流轉(zhuǎn)換和數(shù)據(jù)聚合,是實(shí)時(shí)流處理中非常重要的技術(shù)2023-05-05
MySQL安裝時(shí)initializing database失敗的問題解決
避免MySQL中的隱式轉(zhuǎn)換的方法小結(jié)

