0

当我尝试为此顶点触发器使用数据加载器时收到异常。它说一次只能更新 100 条记录。这是解释帐户对象触发器的代码。所有的评论都非常感谢

trigger MaintainPrimaryOverriding on Account (before insert, before update) {

    if (TriggerUpdateController.getPrimaryBranchOverriding()){

         TriggerAffiliationControl.setLock();


  for(Account s : Trigger.new)
    {

   if (Trigger.isUpdate){ 
          Id ownerId =  Trigger.oldMap.get(s.Id).OwnerId;
        if (s.OwnerId != ownerId){
            //Use Branch Associated with owner ID
            TriggerUpdateController.UpdatePrimaryBranchOfficeForAccountOwnerChange(s);
            TriggerUpdateController.UpdateAffiliation(s);         
          }
   }
    else if(Trigger.isInsert){ 

          TriggerUpdateController.UpdatePrimaryBranchOfficeForAccountOwnerChange(s);

    }
  }
           TriggerAffiliationControl.setUnLock();

 }
}

谢谢!

4

2 回答 2

0

此错误太多 SOQL 查询是由于您达到了调控器限制的事实。查看最佳实践:避免在 FOR 循环中使用 SOQL 查询

于 2014-02-07T23:39:06.407 回答
0

看起来您在代码中为每个更新/插入记录调用以下方法

“TriggerUpdateController.UpdatePrimaryBranchOfficeForAccountOwnerChange(s)” “TriggerUpdateController.UpdateAffiliation(s)”

看起来您在上述语句中发出 SOQL 语句,这导致了管理限制错误。

您必须在此处进行两项修改。1. 捕获列表中更新或插入的帐户列表,并将它们传递给上述两个方法。2. 使上述两种方法接受step1中创建的账户列表并进行处理。3. 如果您想从其他对象获取详细信息,请在 SOQL 中获取这些详细信息。

如果您可以发布“TriggerUpdateController”的代码,我会更好地建议您正确的代码。

问候, Pundareekam Kudikala

于 2014-02-08T00:29:23.920 回答