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
Matthew HamptonMatthew Hampton 

Apex Trigger To Delete or Not Insert A Record

Hello:

 

I have to custom objects - Fiber_Qualified_Address__c and IPTV_Qualified_Address__c. What I would like to do is the following:

 

Build a trigger where when I create a new record on IPTV_Qualified_Address__c, it checks to ensure that the address does not exist on Fiber_Qualified_Address__c.

 

Both objects contain the fields Street_Address__c, Loc__c, and Zip_Code__c so a concatenation of those fields would be the string to look for.

 

If there is a match after insert of ITPV_Qualified_Address__c, I would like the record deleted. I will be inserting upwards of 2,000 records at a time into IPTV_Qualified_Address__c using the data loader so I would need it bulkified.

 

Can anyone please help?

 

Thanks!

 

Matt

Shashikant SharmaShashikant Sharma

try these  trrigger :

 

 If you want to delete the record

 

trigger manageAddressAfterInsert on IPTV_Qualified_Address__c(after insert)
{
     Set<String> setStreetAdd = new Set<String>();
     Set<String> setLoc = new Set<String>();
     Set<String> setZipCode = new Set<String>();  
     MAP<String,Id> mapAddress = new MAP<String,Id>();
     List<IPTV_Qualified_Address__c> ToBeDeleted = new List<IPTV_Qualified_Address__c>();
     for(IPTV_Qualified_Address__c iptvAddress : trigger.new)
      {
         setStreetAdd.(iptvAddress.Street_Address__c);
         setLoc.(iptvAddress.Loc__c);
         setZipCode.(iptvAddress.Zip_Code__c);
         mapAddress.put(iptvAddress.Street_Address__c+iptvAddress.Loc__c+iptvAddress.Zip_Code__c, iptvAddress.id);
          
      }

for(Fiber_Qualified_Address__c fQAddress : [Select Street_Address__c, Loc__c, Zip_Code__c from Fiber_Qualified_Address__c where Street_Address__c in: setStreetAdd And Loc__c in: setLoc And Zip_Code__c in: setZipCode])
{
    if(mapAddress.containsKey(fQAddress.Street_Address__c+fQAddress.Loc__c+fQAddress.Zip_Code__c))
   {
       ToBeDeleted.add(mapAddress.get(fQAddress.Street_Address__c+fQAddress.Loc__c+fQAddress.Zip_Code__c))
   }
}

      
if(ToBeDeleted.size() > 0)
    delete ToBeDeleted;
}

 

If you want to stop insertion

 

try this

 

trigger manageAddressBeforeInsert on IPTV_Qualified_Address__c(before insert)
{
     Set<String> setStreetAdd = new Set<String>();
     Set<String> setLoc = new Set<String>();
     Set<String> setZipCode = new Set<String>();  
     MAP<String,Id> mapAddress = new MAP<String,Id>();

for(IPTV_Qualified_Address__c iptvAddress : trigger.new)
      {
         setStreetAdd.(iptvAddress.Street_Address__c);
         setLoc.(iptvAddress.Loc__c);
         setZipCode.(iptvAddress.Zip_Code__c);
          
      }
for(Fiber_Qualified_Address__c fQAddress : [Select Street_Address__c, Loc__c, Zip_Code__c from Fiber_Qualified_Address__c where Street_Address__c in: setStreetAdd And Loc__c in: setLoc And Zip_Code__c in: setZipCode])
{
  mapAddress.put(fQAddress.Street_Address__c+fQAddress.Loc__c+fQAddress.Zip_Code__c)

}

     for(IPTV_Qualified_Address__c iptvAddress : trigger.new)
      {
                 If(mapAddress.containsKey(iptvAddress.Street_Address__c+iptvAddress.Loc__c+iptvAddress.Zip_Code__c, iptvAddress.id))
{
iptvAddress.addError('Duplicate Record');
}
          
      }


}

 

I hope it helps you