Triggers 批量触发器字段更新salesforce

Triggers 批量触发器字段更新salesforce,triggers,salesforce,apex-code,bulk,apex,Triggers,Salesforce,Apex Code,Bulk,Apex,我正在尝试编写一个触发器,插入、更新或删除记录行项目将更新金额字段。现在,所有这些记录都将具有相同的ParentID费用和行项目名称。除了联系人姓名之外,基本上是重复记录。因此,当我添加一个具有相同父项和名称的新金额的新行项目时,触发器应启动并查询具有相同父项的所有行项目,并应重新计算金额 所以,若我输入第一行项目,说总金额应该是100。然后我输入第二行项目,触发器应该触发并更新两条记录上的金额,并显示“50.00”。出于某种原因,我的触发器没有更新,即使它计算正确。臭虫在哪里?请帮忙 插入后、

我正在尝试编写一个触发器,插入、更新或删除记录行项目将更新金额字段。现在,所有这些记录都将具有相同的ParentID费用和行项目名称。除了联系人姓名之外,基本上是重复记录。因此,当我添加一个具有相同父项和名称的新金额的新行项目时,触发器应启动并查询具有相同父项的所有行项目,并应重新计算金额

所以,若我输入第一行项目,说总金额应该是100。然后我输入第二行项目,触发器应该触发并更新两条记录上的金额,并显示“50.00”。出于某种原因,我的触发器没有更新,即使它计算正确。臭虫在哪里?请帮忙

插入后、更新后、删除后对费用行项目进行触发测试{ SettStList=新集合; //列表项=新列表; 对于费用\行\项目\ c a:trigger.new{ testlist.adda.expense\uu\c; } 列表映射父项= 新建列表[选择名称, 身份证件 金额 来自费用\行\项目\ c 其中费用在:测试列表中]; 小数总数=0.0; 整数计数=0; 对于费用\行\项目\ c exp:mapParent{ 总计=总计+预计金额; 计数++; 迭代器期间的System.debug'总计:; System.debug'计数器:计数; } 如果计数>=1 总数=总数/计数; System.debug除法后的总计数:::::::::::::'+总计; List insertLineItem=新列表; 对于费用\行\项目\ c行项目:MapParent{ lineItem.Amount\uuu c=总计; //insertLineItem.addlineItem; //System.debug'LineItem金额被插入:; } //向上插入insertLineItem; }
看起来你的代码是后触发器。由于您处于后触发上下文中,因此必须执行DML来更新记录

在我看来,你试图在一个触发器中做太多的事情,最好是单独使用每种方法,这样你就可以完全控制你正在做的事情

我看到您确实有一个Upsert DML语句被注释掉了,但是您最好对这个特定实例使用Update,因为您没有使用外部id,也没有决定创建或插入Upsert语句,这正是Upsert的目的