You need to sign in to do that
Don't have an account?

System.LimitException: Too many SOQL queries: 101 on Trigger
trigger DEUpdateLeadOwner on Lead (before update) {
for(Lead Lead1:trigger.new)
{
if(Lead1.Is_Distributed__c==True)
{
Map<integer,String> UsersCA = new Map<integer,String>();
Map<integer,String> UsersHI = new Map<integer,String>();
Set<integer> User = new Set<integer>();
for(Lead record : trigger.new)
{
user.add(Integer.valueof(record.AssignToUserId_Hidden__c));
}
//get the users in team 1 and team2 who are in user list.
List< Team1__c> user1 = [select UserId__c,UserId_hidden__c from Team1__c where UserId__c in : user];
for(Team1__c userA : user1 )
{
UsersCA.put(Integer.valueof(userA.UserId__c),userA.UserId_hidden__c);
}
List<Team2__c> user2 = [select UserId__c,UserId_hidden__c from Team2__c where UserId__c in : user];
for(Team2__c userB : user2 )
{
UsersHI.put(Integer.valueof(userb.UserId__c),userb.UserId_hidden__c);
}
//Change lead owner for CA Leads
If(Lead1.Hawaii__c == false)
{
for(Lead le : trigger.new)
{
if(UsersCA.containsKey(Integer.valueof(le.AssignToUserId_Hidden__c)))
{
le.OwnerId=UsersCA.get(Integer.valueof(le.AssignToUserId_Hidden__c));
le.AssignToUserId_Hidden__c =null;
}
}
}
Error:
Trigger.DEUpdateLeadOwner: line 18, column 1
15:37:15.123 (3123786000)|FATAL_ERROR|System.LimitException: Too many SOQL queries: 101
Can someone help me with this.
Thanks in advance.
for(Lead Lead1:trigger.new)
{
if(Lead1.Is_Distributed__c==True)
{
Map<integer,String> UsersCA = new Map<integer,String>();
Map<integer,String> UsersHI = new Map<integer,String>();
Set<integer> User = new Set<integer>();
for(Lead record : trigger.new)
{
user.add(Integer.valueof(record.AssignToUserId_Hidden__c));
}
//get the users in team 1 and team2 who are in user list.
List< Team1__c> user1 = [select UserId__c,UserId_hidden__c from Team1__c where UserId__c in : user];
for(Team1__c userA : user1 )
{
UsersCA.put(Integer.valueof(userA.UserId__c),userA.UserId_hidden__c);
}
List<Team2__c> user2 = [select UserId__c,UserId_hidden__c from Team2__c where UserId__c in : user];
for(Team2__c userB : user2 )
{
UsersHI.put(Integer.valueof(userb.UserId__c),userb.UserId_hidden__c);
}
//Change lead owner for CA Leads
If(Lead1.Hawaii__c == false)
{
for(Lead le : trigger.new)
{
if(UsersCA.containsKey(Integer.valueof(le.AssignToUserId_Hidden__c)))
{
le.OwnerId=UsersCA.get(Integer.valueof(le.AssignToUserId_Hidden__c));
le.AssignToUserId_Hidden__c =null;
}
}
}
Error:
Trigger.DEUpdateLeadOwner: line 18, column 1
15:37:15.123 (3123786000)|FATAL_ERROR|System.LimitException: Too many SOQL queries: 101
Can someone help me with this.
Thanks in advance.
trigger DEUpdateLeadOwner on Lead (before update) {
Map<integer,String> UsersCA = new Map<integer,String>();
Map<integer,String> UsersHI = new Map<integer,String>();
Set<integer> User = new Set<integer>();
for(Lead record : trigger.new)
{
user.add(Integer.valueof(record.AssignToUserId_Hidden__c));
}
List< Team1__c> user1 = [select UserId__c,UserId_hidden__c from Team1__c where UserId__c in : user];
for(Team1__c userA : user1 )
{
UsersCA.put(Integer.valueof(userA.UserId__c),userA.UserId_hidden__c);
}
List<Team2__c> user2 = [select UserId__c,UserId_hidden__c from Team2__c where UserId__c in : user];
for(Team2__c userB : user2 )
{
UsersHI.put(Integer.valueof(userb.UserId__c),userb.UserId_hidden__c);
}
for(Lead Lead1:trigger.new)
{
if(Lead1.Is_Distributed__c==True && Lead1.Hawaii__c == false)
{
if(UsersCA.containsKey(Integer.valueof(Lead1.AssignToUserId_Hidden__c)))
{
Lead1.OwnerId=UsersCA.get(Integer.valueof(Lead1.AssignToUserId_Hidden__c));
Lead1.AssignToUserId_Hidden__c =null;
}
}
}
}
All Answers
You quering on Team1 and Team2 object in for loop and in salesforce you can only hit 100 SOQL quey in single transaction. so if more than 50 records are updated in one time this error will be came.So you need to hit these queries outside to for loop.
For Salesforce Limits you can follow this link
www.salesforce.com/us/developer/docs/apexcode/Content/apex_gov_limits.htm
Thanks
trigger DEUpdateLeadOwner on Lead (before update) {
Map<integer,String> UsersCA = new Map<integer,String>();
Map<integer,String> UsersHI = new Map<integer,String>();
Set<integer> User = new Set<integer>();
for(Lead record : trigger.new)
{
user.add(Integer.valueof(record.AssignToUserId_Hidden__c));
}
List< Team1__c> user1 = [select UserId__c,UserId_hidden__c from Team1__c where UserId__c in : user];
for(Team1__c userA : user1 )
{
UsersCA.put(Integer.valueof(userA.UserId__c),userA.UserId_hidden__c);
}
List<Team2__c> user2 = [select UserId__c,UserId_hidden__c from Team2__c where UserId__c in : user];
for(Team2__c userB : user2 )
{
UsersHI.put(Integer.valueof(userb.UserId__c),userb.UserId_hidden__c);
}
for(Lead Lead1:trigger.new)
{
if(Lead1.Is_Distributed__c==True && Lead1.Hawaii__c == false)
{
if(UsersCA.containsKey(Integer.valueof(Lead1.AssignToUserId_Hidden__c)))
{
Lead1.OwnerId=UsersCA.get(Integer.valueof(Lead1.AssignToUserId_Hidden__c));
Lead1.AssignToUserId_Hidden__c =null;
}
}
}
}