Skip to content

Record API in AfterInsert

Record

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

MethodIn AfterInsert
getId()the record Id
getNewSObject()the Trigger.new row, read-only
getNewParent(relationshipName)the parent loaded by ParentQuery, or null
getRelated(providerName)rows from a RelatedQuery provider
put(field, value)compiles, but throws System.FinalException: the row is read-only
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

Records

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

MethodIn AfterInsert
getIds()the record Ids
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

  • Ids are set. Key maps by getId(), and pass records.getIds() to async work.
  • put fails the insert. Nothing catches the exception, not even ContinueOnError. Register toUpdate with the record Id in a Writer instead.
  • Reject with the row. record.getNewSObject().addError(…) fails that record like a validation error.
  • getRecords() is the library's list. Removing items changes what the Finalizer receives.