trigger restrictLogSheet on child (before insert) {
Set<Id> parentIds = new Set<Id>();
for(child lg : Trigger.new){
parentIds.add(lg.parent__c); // Get all the parent ids into Set
}
// Build a parentMap.
Map<Id,parent> parentMap = new Map<Id,parent>();
for(parent cs : [Select Id, parentNumber, (Select Id,Name from child__r) from parent where Id in :parentIds]){
parentMap.put(cs.Id,cs);
}
// Iterate over the LogSheet to check and generate error
for(child lg : Trigger.new){
if(parentMap.containsKey(lg.parent__c)){
if(parentMap.get(lg.parent__c).child__r != null && parentMap.get(lg.parent__c).child__r.size()>0){// If greater than 0, throw error
lg.addError('Cannot add Log Sheet for the parent ' + parentMap.get(lg.parent__c).parentNumber + ' There is already one present ' + parentMap.get(lg.parent__c).child__r[0].Name);
}
}
}
}
trigger restrictLogSheet on child (before insert) {
Set<Id> parentIds = new Set<Id>();
for(child lg : Trigger.new){
parentIds.add(lg.parent__c); // Get all the parent ids into Set
}
// Build a parentMap.
Map<Id,parent> parentMap = new Map<Id,parent>();
for(parent cs : [Select Id, parentNumber, (Select Id,Name from child__r) from parent where Id in :parentIds]){
parentMap.put(cs.Id,cs);
}
// Iterate over the LogSheet to check and generate error
for(child lg : Trigger.new){
if(parentMap.containsKey(lg.parent__c)){
if(parentMap.get(lg.parent__c).child__r != null && parentMap.get(lg.parent__c).child__r.size()>0){// If greater than 0, throw error
lg.addError('Cannot add Log Sheet for the parent ' + parentMap.get(lg.parent__c).parentNumber + ' There is already one present ' + parentMap.get(lg.parent__c).child__r[0].Name);
}
}
}
}
Another approch is to use trigger like
All Answers
you can create a rollup feild on parent object which count child record and then use validation like
AND ( ISNEW() , parentobject__r.rollupfield__c > 10)
Mark it as best answer ,if it helps you.
Another approch is to use trigger like