Skip to content

Record API in BeforeInsert

Record

Type: TriggerHandler.InsertRecord. Predicates read the new row and never throw on null.

MethodIn BeforeInsert
getId()null: not saved yet
getNewSObject()the Trigger.new row
getNewParent(relationshipName)the parent loaded by ParentQuery, or null
getRelated(providerName)rows from a RelatedQuery provider
put(field, value)sets a field on the Trigger.new row
isRecordTypeEqual(recordTypeDeveloperName), isRecordTypeNotEqualrecord type developer name matches / differs
equals(field, value), doesNotEqualequal / different; text ignores case
contains(field, value), doesNotContain, startsWith, endsWithtext match; case-sensitive
isNull(field), isNotNullnull / not null
isEmpty(field), isNotEmptynull or '' / neither
isBlank(field), isNotBlanknull, '' or whitespace / none
isTrue(field), isFalsetrue / false
greaterThan(field, value), greaterThanOrEqualTo, lessThan, lessThanOrEqualTonumber or date comparison; false for null

addErrorOnBeforeInsert gets a TriggerHandler.RejectableInsertRecord: no put, plus addError(error) and addError(field, error).

Records

Type: TriggerHandler.InsertRecords, passed to RecordsProvider.query (every record in the chunk) and finalizeBeforeInsert (the qualified records).

MethodIn BeforeInsert
getIds()always empty: no Id yet
getIdsOf(field)non-null Ids in a lookup or Id field
getIdsOf(relationshipName, field)Ids in a field of a parent loaded by ParentQuery
getValuesOf(field)non-null values of a field, as text
getValuesOf(relationshipName, field)values of a field of a parent loaded by ParentQuery, as text
getRecords()the records, as InsertRecord
size()the number of records

Good to Know

  • No Id yet. Key maps by a lookup or a field value, never by getId().
  • Predicates see earlier changes. They count a value that an earlier handler set with put.
  • Only the Validator gets addError. Elsewhere, call record.getNewSObject().addError(…).
  • 0 and false are values. They are not null, empty or blank.
  • Record types. isRecordTypeEqual throws on an object without record types. An unknown name never matches.