我有两个程序,它们都执行各种插入。过程 B 由过程 A 调用。
如果 procA 中的任何插入失败,则一切正常并且不会进行任何提交。但是,如果 procB 中的某些内容失败,我在 procA 中的插入仍然会提交。我该如何防止这种情况发生。我只需要确保如果过程或子过程中的任何内容失败,则不会提交任何插入。
DROP PROCEDURE IF EXISTS procA;
DELIMITER //
CREATE PROCEDURE procA(parama INT,
paramb VARCHAR(50))
BEGIN
INSERT INTO .......
INSERT INTO .......
call procB(@paramx, parama);
END //
DELIMITER ;
和
DROP PROCEDURE IF EXISTS procB;
DELIMITER //
CREATE PROCEDURE procB(paramx INT,
parama INT)
BEGIN
INSERT INTO .......
END //
DELIMITER ;
最佳答案
只需将过程设为函数 - 然后在出现错误代码时回滚
关于mysql - 当调用的子过程失败时防止在过程中提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22588942/