当前位置: 首页 > 知识库问答 >
问题:

使用Opportunity触发器更新OpportunityProducts

阚小云
2023-03-14

我对机会产品(i.e.line项)使用存储在Opp本身中的opp术语进行计算(例如:OLI. RecurringAmt=OPP. Term*OLI. UniPRICE*OLI. QUANTITY)

如果Opp中的术语(整数)的值发生变化,则需要手动更新每个OLI中的数学值。我建议在Opp上使用触发器,以便在术语更改时进行此更新。

问题是:由于Opp中的金额字段由SFDC自动计算为每个相关行项目的单价乘以数量之和,对于每个行项目,通过从Opp触发器更新OLI记录,我会遇到递归问题吗?默认情况下,Opp触发器会尝试更新触发触发器的同一Opp的金额字段?

如果这不会导致问题,我应该在“更新后”或“更新前”触发吗?SFDC是否在触发器完成之前或之后重新计算更新的金额值?

感谢您对此的任何见解。

共有1个答案

邢硕
2023-03-14

如果您更改机会线项目(OLI)单位价格或数量,则在这种情况下可能会发生触发器递归。

标准做法是在事务中使用静态成员或属性来检测操作是否已经执行。

请参阅如何避免递归触发器。这是一个非常基本的例子。您可以扩展它来维护一组已经处理过的Opportunity ID。

我建议使用更新后触发器。

顺便说一下,salesforce。stackexchange。com/是询问Salesforce特定问题的好地方。

 类似资料:
  • userNotesTable: 用户提醒表: 插入触发器: 更新触发器: 这是数据库的当前代码,以及提醒表的特定触发器。我遇到的困难是,从提醒表中的specific中的user notes表中选择特定的名称和额外的内容,所有这些都在更新触发器中。 插入时,和会被插入到提醒和搜索表中,但我希望能够使用特定名称和用户注释表中的额外内容更新搜索表,这可能吗?

  • 问题内容: 由于MySQL忽略了检查约束,如何使用触发器来阻止插入或更新的发生? 例如: 表foo有一个称为agency的属性,并且agency属性只能是1、2、3、4或5。 还是有更好的方法来进行MySQL中的检查约束? 问题答案: 尝试SIGNAL语法-https: //dev.mysql.com/doc/refman/5.5/en/signal.html 编辑 根据Bill Karwin下面

  • 问题内容: 在oracle中,我可以指定列,这将引发触发器的触发: 现在,我想执行以下操作:当 只 更新 一 列时,我不希望触发触发器。这怎么可能? 我可以列出除那一列之外的所有列,该列不应引起触发器的触发。对于具有许多列的表而言,这非常麻烦。 另一种方法是使用像这样的UPDATING函数: 但是,如果我立即更改了COL1 和 COL3,则该语句的计算结果为false。那不是我想要的,因为我只想更

  • 问题内容: 我是SQL的新手,有人可以帮助我修复触发器问题吗? 我有这两个表(“评论”和“报价”),我想更新“评论”表,然后在“插入”,“更新”和“删除”中获取要约表中的数据。如果更新成功,我想使用ReviewId和ReviewDate更新商品表。 我正在使用Azure提供的SQL Server。 UserKey和Asin是唯一的值,所以这就是我用来链接这些表的东西。我将非常感谢您的帮助! 桌子:

  • 我有两张表“产品”和“库存”。表将包含所有产品。在库存表中,我每次都将产品的库存保存为一个新的条目。 我有两种类型的产品。“1”类型的产品将以stock作为编号,“0”类型的产品将以stock作为重量。因此,在products表中,我创建了两列“stock_weight(保持在库存表中输入的总重量)”和“pieces(保持在库存表中输入的总数量)”。 为此,我在stock表上创建了一个触发器,每当

  • 问题内容: 我有一个表orderDetails,其中包含订单的产品 productId color size quantity 和一桌股票 productId size color stock 订单完成后,我将使用此查询在表格中插入商品 然后我在表上有一个触发器: 通过此触发器,我想减少库存,但是只有第一个产品受到影响,其他数量保持不变。 我想念什么? 谢谢你。 问题答案: 要点是:您假设将为插入