I have two objects parent object Vehicles__c and a child object RegistrationNumbers__c. When ever a RegistrationNumbers__c is created or updated I have a trigger which will update RegNumbers__c field on Vehicles__c with Number__c field values of child record. as shown below
If I have 1 parent record with 3 child records (Number__c =123,Number__c =245, Number__c =444) then my trigger will update parent RegNumbers__c = 123/245/444
Everything is working fine for Create and update,but I have a requirement if the particular child record is deleted then I should delete only that Number__c value from RegNumbers__c on parent. I tried the below trigger but it is deleting all the values can anyone help me with this ?
Trigger :
trigger deletevals on RegistrationNumbers__c (before delete) {
List<Vehicles__c> vlist = new List<Vehicles__c>();
Set<Id> vids= new Set<Id>();
for (RegistrationNumbers__c r : Trigger.old){
vids.add(r.Vehicle__Lookup__c);
}
List<Vehicles__c> v=[Select Id,RegNumbers__c,(Select Id,Number__c from RegistrationNumbers__r) from Vehicles__c where ID IN: vids];
for(Vehicles__c vh : v)
{
for (RegistrationNumbers__c rn: vh.RegistrationNumbers__r) {
String number = rn.Number__c ;
String removeval = vh.RegNumbers__c;
if(removeval.Contains(number)){
removeval = removeval.remove(number);// It is removing all the values
vh.RegNumbers__c = removeval;
}
}
vlist.add(vh);
}
update vlist;
}
}