function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sneha walisneha wali 

Deleting the record

I want to delete the record after inserting. Can anyone help to solve this?

trigger LeadUpdateTrigger on Lead (after insert) {
   List<String> ld = new List<String>();
   List<Lead> oldld = new List<Lead>();
   
   for(Lead l : Trigger.new){
       ld.add(l.Phone);
       ld.add(l.Email);
   }
   
   List<Lead> lds = [SELECT Email,LeadSource,Phone FROM Lead where Phone in :ld AND Email in : ld];
  
   if(lds.size()>0){
       for(Lead l1 : lds){
           for(Lead l2 : Trigger.New){
               l1.LeadSource = l2.LeadSource;
               oldld.add(l1);   
           }
       }
       update oldld;
   } 
}

I want to delete "l2" which is new record after oldld is updated
sandeep sankhlasandeep sankhla
you can create one list and then you can store those records in that list in same loopand then you can delete that list.

list<Lead> lstLeadToDelete = new list<Lead>();
trigger LeadUpdateTrigger on Lead (after insert) {
   List<String> ld = new List<String>();
   List<Lead> oldld = new List<Lead>();
  List<Lead> lstLeadToDelete = new List<Lead>();
   
   for(Lead l : Trigger.new){
       ld.add(l.Phone);
       ld.add(l.Email);
   }
   
   List<Lead> lds = [SELECT Email,LeadSource,Phone FROM Lead where Phone in :ld AND Email in : ld];
  
   if(lds.size()>0){
       for(Lead l1 : lds){
           for(Lead l2 : Trigger.New){
               l1.LeadSource = l2.LeadSource;
               oldld.add(l1);   
               lstLeadToDelete .add(l2 );
           }
       }
       update oldld;

        delete lstLeadToDelete ;
   } 
}

please refer above code and let me know if that helps you.

Thanks,
Sandeep
sneha walisneha wali
It will give the error while creating new record.

Apex trigger LeadUpdateTrigger caused an unexpected exception, contact your administrator: LeadUpdateTrigger: execution of AfterInsert caused by: System.SObjectException: DML statement cannot operate on trigger.new or trigger.old: Trigger.LeadUpdateTrigger: line 23, column 1
sandeep sankhlasandeep sankhla
Hi Sneha,

Please use below code and let me know if that helps you.
 
trigger LeadUpdateTrigger on Lead (after insert) {
   List<String> ld = new List<String>();
   List<Lead> oldld = new List<Lead>();
  List<Lead> lstLeadToDelete = new List<Lead>();
   
   for(Lead l : Trigger.new){
       ld.add(l.Phone);
       ld.add(l.Email);
   }
   
   List<Lead> lds = [SELECT Email,LeadSource,Phone FROM Lead where Phone in :ld AND Email in : ld];
  
   if(lds.size()>0){
       for(Lead l1 : lds){
           for(Lead l2 : Trigger.New){
               l1.LeadSource = l2.LeadSource;
               oldld.add(l1);   
			   Lead objleads = new Lead(Id = l2.Id);
               lstLeadToDelete .add(objleads );
           }
       }
       update oldld;

        delete lstLeadToDelete ;
   } 
}

Thanks!
Sandeep
sneha walisneha wali
Hi Sandeep,

I tried the above code. But still it gives error

"Apex trigger LeadUpdateTrigger caused an unexpected exception, contact your administrator: LeadUpdateTrigger: execution of AfterInsert caused by: System.ListException: Duplicate id in list: 00Q2800000HTZIsEAP: Trigger.LeadUpdateTrigger: line 23, column 1"
sandeep sankhlasandeep sankhla
Can you share your code ?
sneha walisneha wali
Same as the above code.
sandeep sankhlasandeep sankhla
trigger LeadUpdateTrigger on Lead (after insert) {
   List<String> ld = new List<String>();
   List<Lead> oldld = new List<Lead>();
  List<Lead> lstLeadToDelete = new List<Lead>();
   
   for(Lead l : Trigger.new){
       ld.add(l.Phone);
       ld.add(l.Email);
   }
   
   List<Lead> lds = [SELECT Email,LeadSource,Phone FROM Lead where Phone in :ld AND Email in : ld];
  
   if(lds.size()>0){
       for(Lead l1 : lds){
           for(Lead l2 : Trigger.New){
               l1.LeadSource = l2.LeadSource;
                
			   Lead objleads = new Lead(Id = l2.Id);
               lstLeadToDelete .add(objleads );
           }
 oldld.add(l1); 
       }
       update oldld;

        delete lstLeadToDelete ;
   } 
}

Please try above code whetre I kept the list outside inner for loop so it will not add duplicates.Please check and let me know if that helps.

Thanks,
Sandeep
sandeep sankhlasandeep sankhla
Hi I saw that there i sno relation between new abd old lead..on what basis you are comparing and assigning the leadSource from new lead to old lead. Please let me know the exact requirmnet so I can help you out in building the code.

Thanks
sneha walisneha wali
updating the lead source is working fine. now i just want to delete the new record after updating the old record.