Apex - 觸發(fā)器

2019-10-26 16:26 更新

Apex觸發(fā)器類似于當(dāng)特定事件發(fā)生時(shí)執(zhí)行的存儲(chǔ)過(guò)程。 它在記錄事件發(fā)生之前和之后執(zhí)行。

語(yǔ)法

trigger triggerName on ObjectName (trigger_events) { Trigger_code_block }

執(zhí)行觸發(fā)器

以下是我們可以觸發(fā)觸發(fā)器的事件:

  • insert
  • update
  • delete
  • merge
  • upsert
  • undelete


觸發(fā)器示例1

假設(shè)我們收到業(yè)務(wù)要求,當(dāng)客戶的“客戶狀態(tài)”字段從非活動(dòng)狀態(tài)更改為活動(dòng)狀態(tài)時(shí),我們需要?jiǎng)?chuàng)建發(fā)票記錄。 為此,我們將通過(guò)以下步驟在APEX_Customer__c對(duì)象上創(chuàng)建觸發(fā)器:


第1步:進(jìn)入sObject


第2步:點(diǎn)擊客戶


第3步:點(diǎn)擊觸發(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;
}

說(shuō)明:

Trigger.new:這這是上下文變量,用于存儲(chǔ)當(dāng)前正在插入或更新的觸發(fā)器上下文中的記錄。 在這種情況下,此變量具有已更新的Customer對(duì)象的記錄。


還有上下文中可用的其他上下文變量:trigger.old,trigger.newMap,trigger.OldMap。

觸發(fā)器示例2

當(dāng)對(duì)客戶記錄進(jìn)行更新操作時(shí),將執(zhí)行上述觸發(fā)器。 但是,假設(shè)我們希望僅在客戶狀態(tài)從非活動(dòng)更改為活動(dòng)而不是每次都更改時(shí)插入發(fā)票記錄。

為此,我們可以使用另一個(gè)上下文變量trigger.oldMap,它將密鑰作為記錄id和值存儲(chǔ)為舊記錄值。

//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變量,如前所述,它是一個(gè)上下文變量,用于存儲(chǔ)正在更新的記錄的Id和舊值。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)