When you have a need of writing a trigger, it is strongly recommended that you make it bulk enabled, so that the trigger can handle number of records whcih can be inserted/updated/deleted through data loader or any other data migration tool.
I have explained writing a basic trigger here.
I have explained writing a basic trigger here.
I will explain how to bulk enable a trigger
Here is the trigger.
Trigger myTrigger on Account(after update) { Set <Id> setAccId = new Set<Id>(); for(Account a: Trigger.new) { if(a.CloseOpportunities__c) setAccId.add(a.Id);//set always contains distinct Ids } list <Opportunity> lstOpp = [select Id, StageName from Opportunity where AccountId in : setAccId]; for(Integer i = 0; i < lstOpp.size(); i++) { lstOpp[i].StageName = "Closed-Won"; } if(lstOpp.size() > 0) update lstOpp; }
And a more genaralised way is something like this.
tirgger MyTrigger on SObject([your events goes here comma seperated]) { Set<Id> SetOfIds = new Set<Id>(); for(SObject s : trigger.new) { SetOfIds.add(s.idField); } Map<Id,SObject> objMap = new Map<Id,SObject>([select Id, [Other Fields] from SObject where Id in : SetOfIds]); for(SObject s : trigger.new) { //do your processing with map } }
Hope this is useful.
Thanks
Srinivas,
www.trekbin.com
thanx sir...its really useful
ReplyDeletePraful G.