如果第二个if-else语句失败,则在第一个If-else语句中回滚MySQL存储过程回滚

时间:2018-04-05 20:10:58

标签: mysql stored-procedures

我想在下面的MySQL存储过程中提供一些帮助,当第一个If else语句通过,第二个错误时,它显示我在ELSE语句中输入的错误消息,但我想回滚第一个If else语句如果第二个错误出来了。我该怎么做?

mat-select

1 个答案:

答案 0 :(得分:0)

您应该使用START TRANSACTION;然后使用其他语句,使用ROLLBACK,然后在程序结束时执行commit。我做了一个简单的示例,看看它应该是什么样的:

DELIMITER $$
CREATE PROCEDURE sp_example()
BEGIN   
    -- Starting the transaction
    START TRANSACTION;
    INSERT INTO `test`.`owner` (`name`) VALUES ('Insert Cubias');
IF 1 > 2 THEN
    INSERT INTO `test`.`owner` (`name`) VALUES ('McCubo');
ELSE
    SELECT 'Rollback transaction' as ErrorMessage;
    -- No records will be inserted
    ROLLBACK;
End if;

-- commit changes to database
COMMIT;
END;
$$

您应该查看官方文档:https://dev.mysql.com/doc/refman/5.7/en/commit.html以获取更多信息。

干杯!