程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 在Mysql存儲進程中應用事務虛例

在Mysql存儲進程中應用事務虛例

編輯:MySQL綜合教程

在Mysql存儲進程中應用事務虛例。本站提示廣大學習愛好者:(在Mysql存儲進程中應用事務虛例)文章只能為提供參考,不一定能成為您想要的結果。以下是在Mysql存儲進程中應用事務虛例正文



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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved