事务用于将某些操作的多个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;
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。