Когда использовать триггеры «до» и «после» в Salesforce?

Введение

Триггер — это код вершины, выполняемый до или после возникновения событий DML. Триггер — это закулисный класс, в котором есть такие переменные, как New, NewMap, Old и OldMap. Триггеры должны быть объемный. Он должен одинаково работать как с отдельными записями, так и с несколькими записями.

Концепция триггеров в Salesforce

Триггер — это компонент Apex, который запускается автоматически после запуска DML для любого объекта. Предположим, у нас есть триггер, написанный на объекте Account перед вставкой и перед обновлением событий. Затем, если пользователь пытается вставить или обновить запись учетной записи, триггер сработает в зависимости от предоставленного условия.

Это означает, что триггеры зависят от объекта (триггер может быть создан для одного объекта за раз) и ориентированы на события.

Типы триггеров в Salesforce

У нас в основном есть два типа триггеров в Salesforce.

1. Перед триггером

Это в основном используется, если мы хотим обновить или проверить значения записи перед ее сохранением в базе данных. Это означает, что первая запись будет проверена, а затем сохранена до срабатывания триггера. Мы не обязаны записывать какие-либо события DML перед триггером.

2. После триггера

Этот тип триггера обычно используется, когда данные необходимо обновить в отдельный объект из-за изменения.

Они выполняются после внесения окончательных изменений в базу данных.

После срабатывания триггера после фиксации DML в каком-либо объекте записи, запускающие триггер After, доступны только для чтения.

Когда использовать триггеры «до» или «после» в Salesforce?

Когда нам нужно проверить или обновить данные или значения записи перед сохранением записи, используйте Перед запуском. Когда мы хотим получить доступ к значениям поля, установленным системой, таким как поле LastModifiedDate, и повлиять на изменения в других записях, используйте After Trigger.

Записи, инициировавшие операцию базы данных, доступны только для чтения в After Trigger. Если бы эта запись инициировала выполнение триггера, мы не могли бы изменить какие-либо значения полей в After Trigger. Например, у нас есть триггер для объекта «Учетная запись» с событием «После обновления DML», и мы хотим обновить значение поля в объекте «Учетная запись». В этом случае Пользователи не смогут изменить значение поля, поскольку оно будет в режиме только для чтения. Итак, в этом сценарии используйте «До триггера» вместо «После триггера».

Примеры

Пример 1

trigger ContactDeletion on Contact (перед удалением) { //Trigger.old содержит список контактов, которые удаляются для (Contact cc : Trigger.old){ if(cc.AccountId != null){ cc.addError('Вы не можете удалить контакт, имеющий связанную учетную запись'); } } }

 

Пример 2

вызвать AccOppTrigger для учетной записи (после вставки) { List oppRec = new List(); for(Account acc : Trigger.new){ if(acc.Industry == 'Banking'){ Opportunity opp = new Opportunity(Name = acc.Name, StageName = 'Prospecting', AccountId = acc.Id, CloseDate = Date. сегодня().addDays(15)); oppRec.add(opp); } } if(!oppRec.isEmpty()){ вставить oppRec; } }

 

Оставить комментарий

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.