事務用於將某些操作的多個SQL作為原子性操作,一旦有某一個出現錯誤,即可回滾到原來的狀態,從而保證資料庫數據完整性。 執行 ...
事務用於將某些操作的多個SQL作為原子性操作,一旦有某一個出現錯誤,即可回滾到原來的狀態,從而保證資料庫數據完整性。
delimiter $$
CREATE PROCEDURE p1 (
OUT p_return_code tinyint
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION # 定義 sql 異常
BEGIN
-- ERRORS
SET p_return_code = 1; # 定義 p_return_code
ROLLBACK; # 回滾操作
END;
DECLARE EXIT HANDLER FOR SQLWARNING
BEGIN
-- WARNINGS
set p_return_code = 2;
ROLLBACK;
END;
START TRANSACTION; # 開始事務
DELETE FROM userinfo WHERE username = 'klvchen';
INSERT INTO tmp(name) VALUES ('haha');
COMMIT; # 提交事務
-- SUCCESS
set p_return_code = 0;
END $$
delimiter ;
執行
set @i =0;
CALL p1(@i);
SELECT @i;