示例
DELIMITER $$ DROP PROCEDURE IF EXISTS sp_test1 $$ CREATE PROCEDURE sp_test1() top:BEGIN -- 錯誤標記,當sql執行出錯的時候,設置標記等於1。 DECLARE _err INT DEFAULT 0; -- 錯誤標記處理,放到最後再聲明,要放到遊標後面。 -- 不然會報錯:Variable or condition declaration after cursor or handler declaration DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1; -- 開始事務 START TRANSACTION; -- 執行任意sql語句,如果執行的sql語句任何一個發生異常(比如主鍵重複),則_err都會被設置爲1。 INSERT INTO stu(id,first_name,birth)SELECT 1,'a',NOW(); -- 判斷異常狀態,回滾和提交。 IF(_err = 1) THEN ROLLBACK; ELSE COMMIT; END IF; END $$ DELIMITER ;