限制异常:SOQL查询太多

时间:2014-02-07 09:34:54

标签: triggers salesforce limit apex

当我尝试将数据加载器用于此顶点触发器时,我收到异常。它说,一次只能更新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();

 }
}

谢谢!

2 个答案:

答案 0 :(得分:0)

此错误 SOQL查询太多是由于您正在达到调控器限制。看Best Practice: Avoid SOQL Queries Inside FOR Loops

答案 1 :(得分:0)

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

“TriggerUpdateController.UpdatePrimaryBranchOfficeForAccountOwnerChange(一个或多个)” “TriggerUpdateController.UpdateAffiliation(一个或多个)”

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

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

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

此致 Pundareekam Kudikala