Apex觸發(fā)器類似于當(dāng)特定事件發(fā)生時執(zhí)行的存儲過程。 它在記錄事件發(fā)生之前和之后執(zhí)行。
trigger triggerName on ObjectName (trigger_events) { Trigger_code_block }
以下是我們可以觸發(fā)觸發(fā)器的事件:
假設(shè)我們收到業(yè)務(wù)要求,當(dāng)客戶的“客戶狀態(tài)”字段從非活動狀態(tài)更改為活動狀態(tài)時,我們需要創(chuàng)建發(fā)票記錄。 為此,我們將通過以下步驟在APEX_Customer__c對象上創(chuàng)建觸發(fā)器:
第1步:進入sObject
第2步:點擊客戶
第3步:點擊觸發(fā)器相關(guān)列表中的“新建”按鈕,添加如下所示的觸發(fā)代碼。
//Trigger Code trigger Customer_After_Insert on APEX_Customer__c (after update) { List InvoiceList = new List(); for (APEX_Customer__c objCustomer: Trigger.new) { if (objCustomer.APEX_Customer_Status__c == 'Active') { APEX_Invoice__c objInvoice = new APEX_Invoice__c(); objInvoice.APEX_Status__c = 'Pending'; InvoiceList.add(objInvoice); } } //DML to insert the Invoice List in SFDC insert InvoiceList; }
說明:
Trigger.new:這這是上下文變量,用于存儲當(dāng)前正在插入或更新的觸發(fā)器上下文中的記錄。 在這種情況下,此變量具有已更新的Customer對象的記錄。
還有上下文中可用的其他上下文變量:trigger.old,trigger.newMap,trigger.OldMap。
為此,我們可以使用另一個上下文變量trigger.oldMap,它將密鑰作為記錄id和值存儲為舊記錄值。
//Modified Trigger Code trigger Customer_After_Insert on APEX_Customer__c (after update) { List<apex_invoice__c> InvoiceList = new List<apex_invoice__c>(); for (APEX_Customer__c objCustomer: Trigger.new) { //condition to check the old value and new value if (objCustomer.APEX_Customer_Status__c == 'Active' && trigger.oldMap.get(objCustomer.id).APEX_Customer_Status__c == 'Inactive') { APEX_Invoice__c objInvoice = new APEX_Invoice__c(); objInvoice.APEX_Status__c = 'Pending'; InvoiceList.add(objInvoice); } } //DML to insert the Invoice List in SFDC insert InvoiceList; }
示例:
我們使用Trigger.oldMap變量,如前所述,它是一個上下文變量,用于存儲正在更新的記錄的Id和舊值。
更多建議: