Общие сведения о триггерах обновления поля: перед вставкой и обновлением

Триггеры обновления полей играют решающую роль в разработке Salesforce, позволяя разработчикам выполнять пользовательскую логику перед вставкой или обновлением записи. В этой статье мы рассмотрим концепции триггеров «Перед вставкой» и «Перед обновлением», а также приведем примеры кода различных методов для их эффективной реализации.

Понимание триггеров обновления поля.
Триггеры обновления поля — это фрагменты кода Apex, которые выполняются перед вставкой или обновлением записи в базе данных Salesforce. Они предоставляют разработчикам возможность изменять значения полей, выполнять проверки и выполнять дополнительные операции на основе определенных условий.

  1. Метод 1. Использование триггера «Перед вставкой».
    Триггер «Перед вставкой» срабатывает перед вставкой записей в базу данных. Вот пример простого триггера «Перед вставкой», который устанавливает статус записи на «Ожидание», если статус не указан:
trigger BeforeInsertTrigger on CustomObject__c (before insert) {
    for (CustomObject__c obj : Trigger.new) {
        if (obj.Status__c == null) {
            obj.Status__c = 'Pending';
        }
    }
}
  1. Метод 2. Использование триггера «Перед обновлением».
    Триггер «Перед обновлением» срабатывает перед обновлением записей в базе данных. Вот пример триггера «Перед обновлением», который предотвращает обновление, если статус записи установлен на «Закрыто»:
trigger BeforeUpdateTrigger on CustomObject__c (before update) {
    for (CustomObject__c obj : Trigger.new) {
        if (obj.Status__c == 'Closed') {
            obj.addError('Updates not allowed on closed records.');
        }
    }
}
  1. Метод 3: объединение триггеров «Перед вставкой» и «Перед обновлением».
    Также можно объединить оба триггера в один для обработки операций вставки и обновления. Вот пример:
trigger BeforeInsertAndUpdateTrigger on CustomObject__c (before insert, before update) {
    for (CustomObject__c obj : Trigger.new) {
        if (obj.Status__c == null) {
            obj.Status__c = 'Pending';
        } else if (obj.Status__c == 'Closed') {
            obj.addError('Updates not allowed on closed records.');
        }
    }
}

Триггеры обновления поля, в частности триггеры «Перед вставкой» и «Перед обновлением», предоставляют мощные возможности настройки при разработке Salesforce. Используя эти триггеры, разработчики могут применять бизнес-правила, выполнять проверку данных и изменять значения полей перед вставкой или обновлением записей. Понимание того, как эффективно использовать эти триггеры, необходимо для создания надежных и адаптированных решений Salesforce.