You need to sign in to do that
Don't have an account?
SFDC ROCK
avoid duplicate field . code is running fine but I am able to find duplicate name ? please tell me what should i change in code.
class
//avoid dublicate record
public class dubli{
public static void avoid(list<trigger_object__C> ls)
{
set<string> stname=new set<string>();
for(trigger_object__c s:ls)
{
stname.add(s.city__c);
}
list<trigger_object__C> trlist =[select id,city__c from trigger_object__C where name in :stname];
map<string,trigger_object__C> maptr=new map<string,trigger_object__C>();
for(trigger_object__C s: trlist ){
maptr.put(s.city__c,s);
}
for(trigger_object__C s: ls){
if(maptr.get(s.city__C) != null){
s.adderror('dont insert duplicate name');
}
}
}
}
trigger:
trigger dup on trigger_object__c (before insert,before update) {
dubli.avoid(trigger.new);
}
//avoid dublicate record
public class dubli{
public static void avoid(list<trigger_object__C> ls)
{
set<string> stname=new set<string>();
for(trigger_object__c s:ls)
{
stname.add(s.city__c);
}
list<trigger_object__C> trlist =[select id,city__c from trigger_object__C where name in :stname];
map<string,trigger_object__C> maptr=new map<string,trigger_object__C>();
for(trigger_object__C s: trlist ){
maptr.put(s.city__c,s);
}
for(trigger_object__C s: ls){
if(maptr.get(s.city__C) != null){
s.adderror('dont insert duplicate name');
}
}
}
}
trigger:
trigger dup on trigger_object__c (before insert,before update) {
dubli.avoid(trigger.new);
}
you are querying on name instead of city
I hope you find the above solution helpful. If it does mark as best answer to help others too.
Thanks,
Ramesh D
if(maptr.get(s.city__C) != null)
to
if(maptr.containsKey(s.city__c) && maptr.get(s.city__c).name == s.name)
also add name to the SOQL
list<trigger_object__C> trlist =[select id,name,city__c from trigger_object__C where name in :stname];