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;
posted @ 2018-12-17 11:14  klvchen  阅读(281)  评论(0编辑  收藏  举报