[英]using mysql transaction in stored procedure
我想做如下事情。有一個過程包含另外兩個過程。 第一個在我的“用戶”表中插入一些日期,第二個對其他表執行相同的操作。 問題是,當我用錯誤的“ CountryID”調用此SP時,導致按預期方式導致錯誤,第一個SP(InsertUsername)將提交! 顯然,我要在此錯誤后進行回滾。
BEGIN
START TRANSACTION ;
SET @Username = _Username;
CALL `InsertUsername` (
@Username , @UserID
);
CALL `InsertAddress` (
@UserID , _CountryID , _AdderssText , _PostalCode
);
COMMIT ;
END
我最近發現,在我們在存儲過程中定義退出處理程序之前,事務無法按預期工作。
我們創建了一個非常粗糙的單行作為默認值:
declare exit handler for SQLWARNING, SQLEXCEPTION begin show warnings limit 5; rollback; end;
就像simon.evans所說的,我終於找到了正確的答案,它對我有用,所以我想添加更多詳細信息:
CREATE PROCEDURE `add`(IN serial_number VARCHAR(20), IN tarnsaction_type INT
, OUT errcode VARCHAR(3))
BEGIN
DECLARE my_balance NUMERIC(15,3);
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SET errcode = '058';
END;
CALL procedure2(p_account_id,v_account_balance);
#do what ever you want to do here
END$$
如果您有問題要問我,因為我遇到了同樣的問題,最后我找到了這個答案:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.