You need to sign in to do that
Don't have an account?
Che SFDC
Need help with Bulkification of code
Dear all, below is my code which auto follows accounts when a new custom object KTT is created or updated. Code works fine on single record but I`m having trouble in bulkfying this code. I get "System.LimitException: Too many DML rows: 10001" error when I try to insert records in bulk via data loader. Is there something wrong with my code? I`m new to Apex world so it would really help if someone can point me to right direction.
Also, if I try to remove last few lines of DML statement, I get "System.DmlException: Insert failed. First exception on row 0; first error: DUPLICATE_VALUE, duplicate value found: <unknown> duplicates value on record with id: <unknown>: []" error.
Also, if I try to remove last few lines of DML statement, I get "System.DmlException: Insert failed. First exception on row 0; first error: DUPLICATE_VALUE, duplicate value found: <unknown> duplicates value on record with id: <unknown>: []" error.
trigger RTTAutoFollow2 on RTT__C (after insert,after update) { List <EntitySubscription > NewFollowers = new List <EntitySubscription > (); List<Id> whatIds = new List<Id>(); for(RTT__C sampletracker : trigger.new) { whatIds.add(sampletracker.Account__c); } Map<Id, Account> Accounts = new Map<Id, Account>([SELECT Id, Name from Account WHERE Id in :whatIds]); for(RTT__C sampletracker : trigger.new){ if(sampletracker.Account__c != NULL){ String Accid = sampletracker.Account__c; String AccIds = accounts.get(Accid).ID; if (sampletracker.No_longer_Key__c == False) { EntitySubscription ES = new EntitySubscription(); ES.SubscriberId = sampletracker.Assigned_Sales_Team__c; ES.ParentId = sampletracker.Account__c; } try{ insert NewFollowers; } catch (System.DmlException e){ } } }}
Change the code around second for loop like.
for(RTT__C sampletracker : trigger.new){
if(sampletracker.Account__c != NULL){
String Accid = sampletracker.Account__c;
String AccIds = accounts.get(Accid).ID;
if (sampletracker.No_longer_Key__c == False)
{
EntitySubscription ES = new EntitySubscription();
ES.SubscriberId = sampletracker.Assigned_Sales_Team__c;
ES.ParentId = sampletracker.Account__c;
NewFollowers.add(ES);
}
}
try
{
insert NewFollowers;
}
catch (System.DmlException e)
{
}
All Answers
Change the code around second for loop like.
for(RTT__C sampletracker : trigger.new){
if(sampletracker.Account__c != NULL){
String Accid = sampletracker.Account__c;
String AccIds = accounts.get(Accid).ID;
if (sampletracker.No_longer_Key__c == False)
{
EntitySubscription ES = new EntitySubscription();
ES.SubscriberId = sampletracker.Assigned_Sales_Team__c;
ES.ParentId = sampletracker.Account__c;
NewFollowers.add(ES);
}
}
try
{
insert NewFollowers;
}
catch (System.DmlException e)
{
}
Can you paste complete error message from debug log?
Thanks,
Yogesh
You were right. I was an issue with "for" loop. If I finish my loop before try, system lets me upload bulk data. Thank you so much for your help!