I am getting "System.LimitException: Too many SOQL queries: 101" when I am trying to load 500 opptys through dataloader.I think insert statement in for loop is where it is failing.But it ran successfully when I set the batch size to 1. I need to assign the inserted event controller id to tempfevent tempfevent.Event_Controller__c = fec.Id;
trigger CreateAndUpdatefEvent on Opportunity (after insert,after update) {
list<Id> OppIdList = new list<Id>();
list<fEvent__c> felist = new list<fEvent__c>();
list<fEvent__c> felist2 = new list<fEvent__c>();
fEvent__c tempfevent = new fEvent__c();
for(Opportunity o:trigger.new){
OppIdList.add(o.Id);
}
list<Opportunity>insertOpptyList =[Select o.StageName,o.IsClosed,(Select Id, Name, Amount__c Opportunity__c From fEvent3__r where Status__c!='Cancelled' limit 1) From Opportunity o where o.Id in:OppIdList];
for(Opportunity o:insertOpptyList){
if(o.fEvent3__r.size()==0){
Event_Controller__c fec = new Event_Controller__c(Amount__c = o.Amount,Years__c =1,Fiscal_Year__c = string.valueOf(o.CloseDate.year()));
**insert fec;**
tempfevent.Opportunity__c = o.Id;
**tempfevent.Event_Controller__c = fec.Id;**
tempfevent.Amount__c = o.Amount;
felist.add(tempfevent);
tempfevent = new fEvent__c();
}
else{
if(o.fEvent3__r.size()>0){
o.fEvent3__r[0].Amount__c = o.Amount;
felist2.add(o.Funding_Event3__r[0]);
}
}
}
if(felist.size()>0)
insert felist;
if(felist2.size()>0)
update felist2;
}