Do Apex Triggers have access to formula fields?

On the Contact object I have a custom formula field call Prioirity__c that is defined as:

IF(ISPICKVAL(Account.Rating, 'Very Hot'), 'High', '') 

I also have a trigger defined for the contact object as follows:

trigger testFormula on Contact (before update) {
    for( Contact c : Trigger.new ) {
        if( c.Priority__c == 'High' ) {
            // do something
        }
    }
}

My question is will this trigger “do something” with Contact records where the Account.Rating == ‘Very Hot’ or do I have to run a SOQL query to get the value of Account.Rating for the Contact records being processed by the Trigger?


Edit:

After testing it does appear Apex Triggers have access to formula fields. Does anyone know of where this might be documented? I would like to verify this is indeed as intended and not something that could change in the future.

Answer

This will work without having to query the Account object. Formula field values are calculated when read so you’ll have the most up to date value available in the trigger.

On a side note, you probably want to change your if statement to have == not =.

Attribution
Source : Link , Question Author : sfelf , Answer Author : Matt Lacey

Leave a Comment