0

I have a asynchronous trigger on Sobject(Billing_Product__c) which works on CDC framework. Change event can be caused by insert, update or delete. How do I check inside trigger if the change event is caused by insert of sobject ?

trigger BillingProductsChangeTrigger on Billing_Product__ChangeEvent (after insert) {    

system.debug('IN BILLING PRODUCT CHANGE EVENT TRIGGER!!');
Set<String> bpIds = new Set<String>();

for (Billing_Product__ChangeEvent change : Trigger.new) {
    // Get all Record Ids for this change and add to the set
    List<String> recordIds = change.ChangeEventHeader.getRecordIds();
    bpIds.addAll(recordIds);
}
system.debug('bpIds ' + bpIds);
BillingProductClass.BillingProductsAfter(bpIds);

}

1 Answer 1

1

You get it from the change event header. Here's an example adapted from the Change Data Capture Developer Guide:

trigger MyAccountChangeTrigger on AccountChangeEvent (after insert) {
    for (AccountChangeEvent event : Trigger.New) {
        EventBus.ChangeEventHeader header = event.ChangeEventHeader;
        if (header.changetype == 'CREATE') {
        }        
        else if (header.changetype == 'UPDATE') {
        }     
    }
}

Available change types are

  • CREATE
  • UPDATE
  • DELETE
  • UNDELETE

plus the gap event types.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .