我想在下面的MySQL存储过程中提供一些帮助,当第一个If else语句通过,第二个错误时,它显示我在ELSE语句中输入的错误消息,但我想回滚第一个If else语句如果第二个错误出来了。我该怎么做?
mat-select
答案 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以获取更多信息。
干杯!