理解触发器的执行机制

概述

当你的触发器配置了大量的执行操作,或者正在跟很多其它的自动化能力结合使用时,了解触发器的内部执行机制,将大大有助于你进行深度调试、理解各种动作的执行顺序、真正「玩转」触发器。

执行机制1:

被触发的不同触发器/工作流的执行是并列执行的,执行完成时间是不定的,不会依赖于触发时间从前往后执行完成,当数据的录入形式存在导入时,需要注意该机制。

示例:如下是一个用于统计地产中介公司的经纪人的带看工作量的触发器/工作流,每当产生一条带看的时候,则去每日工作量表里查找,是否创建了该经纪人今天的工作量数据,如果没有创建,则创建数据。

如果带看是通过导入数据的形式产生的,这时同时导入了一个经纪人的一天的10条带看,因为不同操作触发的触发器/工作流的执行是并行的,所以有可能产生1-10条每日工作量,这与我们想要的结果有差异(只产生一条每日工作量),所以表格存在导入的时候,设计触发器/工作流需要考虑触发器/工作流并发执行的问题。

解决方案:

如何创建聚合表?

使用聚合表基于时间和经纪人分组统计,再通过在聚合表中设定定时触发器/工作流来创建每日工作量。

注:聚合表具有聚合时长,因此数据会不具有实时性。

执行机制2:

单个触发器/工作流的后续操作的执行是无顺序的,执行结果并非实时生效。

执行机制3:

在触发触发器/工作流的时候,{当前数据}、{当前数据.字段}值就已经固定,不会变更。

示例:触发器/工作流第一个操作修改了当前数据的值,第二个操作使用当前数据的字段值还是第一个操作修改前的值。

解决方案:

如果第二个操作需要获取当前数据的新值,可使用ITEM查询。

执行机制4:

在同一次操作触发的触发器/工作流中,计算字段的更新不是实时,等同一次触发的触发器/工作流都执行完成后才会更新计算字段。

执行机制5:

跨表格计算,计算字段的值的变化是不会触发触发器/工作流的。

执行机制6:

触发器/工作流的后续操作修改可以绕过必填、数据验证、显隐。

执行机制7:

被本表触发器/工作流的后续操作修改字段触发的触发器/工作流不会被触发。

举例:

A表(字段A1,A2,A3)有两个触发器/工作流:

触发器/工作流1:A1修改后会触发触发器/工作流,后续操作修改当前数据的字段A2。

触发器/工作流2:A2修改后会触发触发器/工作流,后续操作修改当前数据的字段A3。

B表(字段B1(关联A表),字段B2):

触发器/工作流3:B2修改后会触发触发器/工作流,后续操作修改字段B1关联的A表数据的字段A2。

那么修改字段A1后,只会触发触发器/工作流1

虽然触发器/工作流2也满足条件,但是根据触发器/工作流机制是不会执行的,修改B2会触发触发器/工作流3,

因为字段A2的修改是别表触发器/工作流导致的,所以会继续往下执行。

解决方案:

将触发器/工作流进行合并,合并成一个触发器/工作流,进行两个执行操作。

2023-09-22 更新
3051 次查看
2