You need to sign in to do that
Don't have an account?
ckellie
Cannot Bulk Update Field
I am writing a trigger to bulk update campaign records with the lead/contact owner name in a text field. I am trying to bulkify this trigger, but I am not updating more than one record at a time. How can i write the trigger to bulk update? Below is my trigger:
trigger CampaignOwner on CampaignMember (after insert, after update) { Set<Id> UserIds = new Set<Id>(); for (CampaignMember ca: Trigger.new){ System.debug('**** 0 userids id : '+ca.ownerid__c); UserIds.add(ca.ownerId__c); System.debug('**** 1 ca id : '+ca.id); } Map<Id, User> entries = new Map<Id, User>(); List<user> us = [select Id, LastName, FirstName, Phone, Fax, Email from User where id in :UserIds]; string txt = ''; for(CampaignMember camp: [select id, Ownerid__c from CampaignMember]) { System.debug('**** 100 *********************us[0].Us.FirstName: '+us[0].FirstName); if(camp.Ownerid__c<> null){ camp.Owner_Name__c = us[0].FirstName + ' ' + us[0].LastName; } update camp; } }
Thank you
You can use before insert, In this you are not required to use any DML update statement otherwise it becomes recursive. See the below example :
trigger CampaignOwner2 on CampaignMember (Before insert) {
Set<Id> UserIds = new Set<Id>();
for (CampaignMember ca: Trigger.new){
System.debug('**** 0 userids id : '+ca.ownerid__c);
UserIds.add(ca.ownerId__c);
System.debug('**** 1 ca id : '+ca.id);
}
Map<Id, String> entries = new Map<Id, User>();
for(User usr:[select Id, LastName, FirstName, Phone, Fax, Email from User where id in :UserIds]){
String FullName=usr.FirstName + ' ' + usr.LastName;
entries.put(id,FullName)
}
for (CampaignMember campMember: Trigger.new){
campMember.Full_Name__c= entries.get(campMember.id);
}
}
All Answers
I have continued to work on the proble. Below is my error message:
And the trigger:
I am trying to update the ownerid on the campaignmemeber records. How do I do this?
You can use before insert, In this you are not required to use any DML update statement otherwise it becomes recursive. See the below example :
trigger CampaignOwner2 on CampaignMember (Before insert) {
Set<Id> UserIds = new Set<Id>();
for (CampaignMember ca: Trigger.new){
System.debug('**** 0 userids id : '+ca.ownerid__c);
UserIds.add(ca.ownerId__c);
System.debug('**** 1 ca id : '+ca.id);
}
Map<Id, String> entries = new Map<Id, User>();
for(User usr:[select Id, LastName, FirstName, Phone, Fax, Email from User where id in :UserIds]){
String FullName=usr.FirstName + ' ' + usr.LastName;
entries.put(id,FullName)
}
for (CampaignMember campMember: Trigger.new){
campMember.Full_Name__c= entries.get(campMember.id);
}
}
This has been a big help. Thank you