Я создал триггер перед вставкой для пользовательского объекта, который проверяет любую существующую запись с помощью запроса выбора, а затем продолжает вставку, если запись отсутствует, или addError, если она уже присутствует в объекте.Перед вставкой записи мне нужно изменить значение этой записи и вставить другую запись в объект.Это прекрасно работает, если запись запускается через класс apex с использованием функции вставки, но при вставке записей из мастера импорта данных она не работает должным образом.Триггер изменяет значение, но исходное неизмененное значение вставляется в объект.Также запрос на выборку для проверки, существует ли объект или нет, возвращает записи, хотя нет соответствующих записей. Я проверил идентификаторы, возвращенные из запроса выбора, и эти идентификаторы не существуют.
public class rec_obj {
public static Boolean isFirstTime = true;
public static Boolean AlreadyExists(Custom_Object_A__c obj_a){
Integer exists = [select Id from Custom_Object_A__c where Field1__c=:obj_a.Field1__c Limit 1].size();
if(exists>0)
{
return true;
}
return false;
}
}
trigger AddObjA on Custom_Object_A (before insert) {
if(rec_obj.isFirstTime){
rec_obj.isFirstTime = false; // To prevent infinite recursive calls
for(Custom_Object_A obj_a : Trigger.new){
System.debug('Source Value Inserting:'+obj_a);
if(rec_obj.AlreadyExists(obj_a)){
obj_a.addError('Already Exists');
}else{
Custom_Object_A obj_b = new Custom_Object_A();
Insert obj_b;
}
}
system.debug('Source Updated For Insertion:'+obj_a);
}
else{
system.debug('Recusive Trigger Fired');
}
}