Mysql儲存過程的回滾
阿新 • • 發佈:2019-01-29
在Mysql資料據中建立儲存過程執行多條SQL語句,當遇到問題時將所有的執行都回滾,這樣儲存過程就實現了事物操作。
實現過程:定義一個變數t_error初始值為0,再宣告一條語句,如果執行SQL的時候捕獲到異常,設定t_error的值為1,在儲存過程前設定 autocommit = 0; 在儲存過程結束的地方判斷t_error的值,0則commit,1則rollback。
建立儲存過程的SQL如下:
</pre><pre name="code" class="sql">DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `proTest`() BEGIN DECLARE t_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; set autocommit=0; START TRANSACTION; INSERT INTO student VALUES(1, 'test1',1,3); /* 第一條 insert 能執行 */ INSERT INTO student VALUES('a', 'test2',3,6); /* 第二條 insert,不能執行 */ IF t_error = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END
呼叫這個儲存過程後,不會向資料庫表中插入任何記錄。