什么是死循环?
比如说表A有一个触发器1,在表A修改的时候会修改表B。
表B有一个触发器2,在表B修改的时候会去修改表A。
那么系统就会判定存在死循环,系统的死循环判定是基于表格(创建、修改才会参与判定)的,而非基于触发器条件。
在基于表格的触发执行链中,只要一个触发器出现了两次,就会判断为死循环,比如上方举例的触发执行链就是ABABABABA..
如何避开死循环?
解决方式1:
在梳理清楚两个触发器的触发逻辑后,可以在我们的执行操作处,判断哪个触发器中的执行操作需要开启“不触发后续触发器”按钮,开启后死循环即可解决。
解决方式2:
将死循环中间的一个节点的触发方式改为根据指定时间触发,指定时间的触发不参与死循环的判定。示例:比如上面这个示例,我们可以在表B增加一个时间字段,触发器1修改表B的时候给时间字段赋值,触发器2的触发方式改为基于该时间字段执行。
解决方式3:
触发器1和触发器2进行合并。
例如:条件用OR()函数将触发器1和触发器2进行合并,下方的执行操作用IF()函数进行判断执行赋值。
解决方式4:
如果流程中心也可完成相同功能的话,使用流程中心,流程中心的所使用的触发方式为手动执行的触发器,不参与死循环的判定。