【发布时间】:2016-03-10 16:59:37
【问题描述】:
如果发生错误(使用 SIGNAL),我会尝试在过程中回滚事务。 我有两个问题:
- 如果发生错误,我想停止执行语句 1
- 如果过程 1 中出现错误,我想停止执行 Stateemtn 2。
程序 1:
CREATE DEFINER=`edgar`@`%` PROCEDURE some_sp (IN param INT)
BEGIN
DECLARE `_rollback` BOOL DEFAULT 0;
DECLARE new_legal_entity_id INT;
DECLARE specialty CONDITION FOR SQLSTATE '45000';
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET _rollback = 1;
START TRANSACTION;
CASE -- Some condition
BEGIN
SIGNAL specialty
SET MESSAGE_TEXT = 'Error message';
END;
ELSE BEGIN END;
END CASE;
INSERT INTO .... -- Statement 1
COMMIT;
END
程序 2:
CREATE DEFINER=`edgar`@`%` PROCEDURE some_sp_1 (IN param INT)
BEGIN
DECLARE `_rollback` BOOL DEFAULT 0;
DECLARE new_legal_entity_id INT;
DECLARE specialty CONDITION FOR SQLSTATE '45000';
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET _rollback = 1;
START TRANSACTION;
CALL some_sp(some_param);
INSERT INTO .... -- Statement 2
COMMIT;
END
【问题讨论】:
标签: mysql error-handling transactions rollback