执行顺序: before flows -> before trigger -> after trigger -> after flows -> before trigger -> after trigger ->
验证:
1)新建before flows:把age__c字段更新为:18
2)新建after flows:把age__c字段更新为:20
3)修改触发器:before把age__c累加3
最终查看debug日志:
从23修改为0时,首先进入了before flow被修改为18;再进入before trigger被+3为21;再进入after trigger拿到old和new分别为修改前的:23和修改后的:21;然后进入after flow被修改为:20;再进入before trigger+3为23.这个就是最终的值了。
总结:1.如果既有before flow又有after flow,那么before trigger会被执行两次的情况就可能会导致一些奇奇怪怪的问题,相信自己是程序员:能用代码就用代码,别用Flows,那个是给不懂代码的设计的。 2.我研究这个问题是有个需求,在before trigger的时候,有很多逻辑都会执行记录所有人的修改,然后有个字段是随记录所有人变化的。我最初的想法,在after trigger里执行最终的更新,然而用管理员没什么问题。假如记录所有人变更了,原所有人就可能没拥有这条记录的编辑权限,那么在update记录的时候就会报错。解决方法,放在before trigger的最后,再循环一遍Trigger.new执行更新。(在这里始终遵循:需要修改本身在before完成,需要修改其他对象在after完成)