![]() |
1
2
最糟糕的是,您甚至无法在第一时间获得这些15K记录,因为触发器中有1000行的查询限制(这与触发器被调用的行数有关,但这可能没有帮助) 我想你唯一的办法就是在文档中用@future标记来阅读。它给你更高的限制。尽管如此,一天只能调用这么多对象,因此可能需要以某种方式跟踪哪些父对象让其子对象更新,然后脱机处理。 最后一个选择可能是通过一些外部工具使用api。但是您仍然需要确保代码中的所有内容都是成批的。 我一开始以为这些限制很苛刻,但实际上如果批处理正确,您可以在其中做很多事情,我们定期从触发器更新1000行。从架构的角度来看,远不止这些,而且你实际上是在谈论批处理,不管怎样,这通常不是由触发器激活的。有一件事是肯定的——它们能让你跳出篮圈去做。 |
![]() |
2
4
解决这个问题最好(也是最简单)的方法是 Batch Apex ,您可以创建一个批处理类并从触发器触发它。就像@future,它在一个单独的线程中运行,但它可以处理多达50000000条记录!
在使用之前,您需要向批处理类传递一些信息
我只注意到这个问题有多老了,但希望这个答案能帮助其他人。 |
![]() |
3
1
我认为codek是正确的,走api/外部工具路线是一个很好的方法。调控器限制仍然适用,但对api调用的要求要少得多。Salesforce最近改进了他们的数据加载器工具,所以这可能是一个值得研究的问题。 您可以尝试的另一件事是对出站消息使用工作流规则来调用您端的web服务。只需发送父对象,让您端的进程通过api处理子记录更新。对于出站消息,需要注意的一点是,最好以某种方式将进程排队,并立即响应Salesforce。否则Salesforce将重新发送消息。 |
![]() |
4
1
@未来不起作用(根本不更新记录)?奇怪的。你试过在自动测试中使用你的功能吗?它应该可以工作,并且应该忽略注释(在测试期间,它将立即执行,测试方法有更高的限制)。我建议你多调查一点,这似乎是你想要完成的最好的解决方案。 还有-也许是你班上的同学,而不是扳机? 菊花链触发器一起不会起作用,我在过去尝试过。 你的最后一个选择可能是批量顶点(从2010年冬季发布,所以所有组织现在都应该拥有它)。这意味着大量的数据更新/验证工作,通常在普通数据库中运行一整夜(可以安排)。见 http://www.salesforce.com/community/winter10/custom-cloud/program-cloud-logic/batch-code.jsp 以及发行说明pdf。 |
![]() |
5
0
我相信在18版的api中,1000的限制已经被删除。(所以文件上说,但在某些情况下,我还是达到了极限) 所以你可以使用批处理顶点。使用单个apex update语句 类似于:
请你膨胀你的跳虎也看 http://sfdc.arrowpointe.com/2008/09/13/bulkifying-a-trigger-an-example/ |
![]() |
6
0
也许更改数据模型是更好的选择。考虑在从父对象访问数据的子对象上创建一个公式。这可能会更有效率。 |
![]() |
Ihtsham Minhas · 创建新帐户时选择关系值(多对多) 7 年前 |
|
santhosh kumar · 尝试通过Java(EnterpriseWSDL)更新Salesforce Contact objet时,获取“INVALID\u FIELD\u FOR\u INSERT\u UPDATE”错误消息 7 年前 |
![]() |
to_the_nth · 以列表形式获取当前活动帐户的联系人电子邮件 7 年前 |
![]() |
MRavindran · mule:在Salesforce中查询订单 7 年前 |