MYSQL存儲過程中事務的用法(超級詳細)


下面是用戶表,id是主鍵,不會重復

https://www.jianshu.com/p/b175066a1931

 

 

 下面是存儲過程的創建,這個是一個比較全面的存儲過程,包括輸入,輸出,事務,循環,判斷,定義變量。常用的一些,我都寫進來了。

#將結束符號 改成 ;; 結束
DELIMITER ;;
#創建一個存儲過程,名稱是pre_affair ,輸入變量是 in_user_name 字符串型 ,輸出變量是out_rest 整形
CREATE PROCEDURE `pre_affair`(IN in_user_name VARCHAR(255), OUT out_rest INT)
BEGIN
    #定義一個循環變量i,類型是整形,默認是5
    DECLARE i INT DEFAULT 5;
    #定義一個錯誤的變量,類型是整形,默認是0
    DECLARE t_error INTEGER DEFAULT 0;
    #捕獲到sql的錯誤,就設置t_error為1
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
    #開啟事務
    START TRANSACTION;

    #刪除id是5的這條數據
    DELETE FROM `user` WHERE id = 5;
    #循環插入數據,這里是從 id是5插入到id是6為止
    #注意:這里user表的id是5的這條被刪除了,因為id是主鍵,但是id是6的這條本身存在,如果這里插入id是6時,將會發生事務回滾,id是5的這條不會被刪除
    WHILE i<7 DO
        #插入一條數據進來
        INSERT INTO `user`(id,user_name)VALUES(i,in_user_name);
        #設置i每次循環加1
        SET i = i + 1;
    END WHILE;

    #如果捕獲到錯誤
    IF t_error=1 THEN
        #回滾
        ROLLBACK;
    ELSE
        #提交
        COMMIT;
    END IF;
    #查看返回的結果,並給到輸出的變量中
    SELECT t_error INTO out_rest;
END
;;
#將結束符號 改成 ; 結束
DELIMITER ;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM