Trigger Scenario: Avoid Creating Duplicate Fields

When user tries to insert Account with name which already used in another existing account ,User should be presented with Error.

There are multiple approach to do same question: Let’s learn each approach to improve our coding skills:

WAY1

trigger AccountDuplicateCheckTrigger on Account (before insert) {
//Preparing Account names in Set from trigger.new

Set<String> nameSet = new Set<String>();

for(Account acc : trigger.new){

nameSet.add(acc.name);

}

// getting the list of accounts in database with the account name we entered ( trigger.new)

List<Account> accList = new List<Account>([select id,name from Account where name in: nameSet]);

for(Account a : trigger.new){

if(accList.size() > 0 )
a.addError('Account already exists in your Organization with name '+a.name);

}
}

WAY2: Check Using null condition

trigger DemoTrigger on Account(before insert,before update) {
List<Account> accList=new List<Account>([select id,name from Account]);
map<String,Account> accmap=new map<String,Account>();
for(Account acc:accList){
accmap.put(acc.Name,acc);
}

for(Account acc:Trigger.new){
if(accmap.get(acc.Name)!=null){
acc.adderror('Name already exists');
}
}
}

WAY3: Check using containsKey condition

trigger DemoTrigger on Account(before insert,before update) {
List<Account> accList=new List<Account>([select id,name from Account]);
map<String,Account> duplicateMap=new map<String,Account>();

//get old records
for(Account acc:accList){
duplicateMap.put(acc.Name,acc);
}
//compare old records with records in trigger.new
for(Account acc:Trigger.new){
if(duplicateMap.containsKey(acc.Name)){
acc.adderror('Name already exists');
}
}
}

Test Class

@istest
public class AccountduplicateTriggerTest{
  static testmethod void myTest(){
      Boolean result =false;
      Account acc = new Account();
      acc.Name= 'Smriti';
      insert acc;
 
      try{
      Account acc1=new account();
      acc1.Name= 'Smriti';
      insert acc1;
      }
      catch(DMLException ex)
      {
      result=true;
      system.assert(result);
      }
  }
 }

 

https://developer.salesforce.com/forums/?id=906F000000094I7IAI
https://developer.salesforce.com/forums/?id=9060G000000XbWPQA0

Did you enjoy this article?
Signup today and receive free updates straight in your inbox.
I agree to have my personal information transfered to MailChimp ( more information )
50% LikesVS
50% Dislikes