MySQL 事务处理
事务用于将某些操作的多个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;