0
我有兩個表,如
SAMPLETABLE1(CNT INT(5));
SAMPLETABLE2(CNT INT(5));回滾所有查詢,如果任何查詢返回mysql數據庫中的錯誤
我有一個存儲過程如下:
create procedure p1()
begin
declare k int;
DECLARE exit handler for sqlexception
BEGIN
SET k = 0;
ROLLBACK;
END;
set autocommit = off;
START TRANSACTION;
update sampletable2 set cnt = cnt + 5;
insert into sampletable1 values ('5s');
IF k < 1
THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
end;
//
當我運行此程序將返回錯誤「數據被截斷列‘CNT’第1行」和第一更新發射是好的,我知道我我將一個字符值插入到一個數字數據類型中。
我想我的第一個查詢是回滾,如果任何查詢返回異常,但它沒有發生請建議。
了退出處理程序只要對的SQLException遇到,導致錯誤的語句之後的語句不執行,並且語句調用在聲明執行後立即在開始和結束聲明之間進行,程序終止。因此,您不需要if k <1代碼塊 - 您可以簡單地用commit語句替換它。 –