我们在一个.p文件中使用函数,如下所示:
myTest.p
BLOCK-LEVEL ON ERROR UNDO, THROW.
FUNCTION secondFunc RETURNS LOG ():
UNDO, THROW NEW Progress.Lang.AppError("ERROR HAPPENED, UNDO ALL!").
END FUNCTION.
FUNCTION firstFunc RETURNS LOG ():
secondFunc().
END FUNCTION.
FUNCTION starter RETURNS LOG ():
/* start transaction */
DO TRANSACTION:
firstFunc().
END.
END FUNCTION.
/* start execution of the function tree */
starter().
CATCH err AS Progress.Lang.Error:
RUN WRITE_log(err:GetMessage(1)).
MESSAGE err:GetMessage(1) VIEW-AS ALERT-BOX.
UNDO, RETURN ERROR.
END.根据这段代码,Transaction撤消在starter()-function中所做的所有更改吗?或者,我们是否需要向Transaction中的所有函数传递某种句柄,以便“撤消”?
发布于 2016-03-01 12:13:25
如果“外部”事务回滚,那么所有子事务,包括被调用代码中的事务,也将回滚。
https://stackoverflow.com/questions/35721745
复制相似问题