当被调用的子过程失败时,防止在过程中提交

时间:2014-03-23 09:13:15

标签: mysql stored-procedures

我有两个程序,两个程序都插入variours。程序A调用程序B.

如果procA中的任何插入失败,那么一切都很好并且没有提交。但是,如果procB中的某些内容失败,我在procA中的插入仍然会提交。我该如何防止这种情况发生。我只需要确保如果过程OR子过程中的任何内容失败,则不会提交任何插入。

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 ;

1 个答案:

答案 0 :(得分:0)

只需将过程设为函数 - 然后回滚错误代码