如何避免死循环

什么是死循环?

比如说表A有一个触发器1,在表A修改的时候会修改表B。

表B有一个触发器2,在表B修改的时候会去修改表A。

那么系统就会判定存在死循环,系统的死循环判定是基于表格(创建、修改才会参与判定)的,而非基于触发器条件。

在基于表格的触发执行链中,只要一个触发器出现了两次,就会判断为死循环,比如上方举例的触发执行链就是ABABABABA..

如何避开死循环?

解决方式1:

在梳理清楚两个触发器的触发逻辑后,可以在我们的执行操作处,判断哪个触发器中的执行操作需要开启“不触发后续触发器”按钮,开启后死循环即可解决。

解决方式2:

设置触发方式

将死循环中间的一个节点的触发方式改为根据指定时间触发,指定时间的触发不参与死循环的判定。示例:比如上面这个示例,我们可以在表B增加一个时间字段,触发器1修改表B的时候给时间字段赋值,触发器2的触发方式改为基于该时间字段执行。

解决方式3:

表达式中的操作与函数

触发器1和触发器2进行合并。

例如:条件用OR()函数将触发器1和触发器2进行合并,下方的执行操作用IF()函数进行判断执行赋值。

解决方式4:

如果流程中心也可完成相同功能的话,使用流程中心,流程中心的所使用的触发方式为手动执行的触发器,不参与死循环的判定。

2023-09-22 更新
1586 次查看
1 0