
- Apex程式設計教程
- Apex - 首頁
- Apex - 概述
- Apex - 環境
- Apex - 示例
- Apex - 資料型別
- Apex - 變數
- Apex - 字串
- Apex - 陣列
- Apex - 常量
- Apex - 決策制定
- Apex - 迴圈
- Apex - 集合
- Apex - 類
- Apex - 方法
- Apex - 物件
- Apex - 介面
- Apex - DML
- Apex - 資料庫方法
- Apex - SOSL
- Apex - SOQL
- Apex - 安全性
- Apex - 呼叫
- Apex - 觸發器
- Apex - 觸發器設計模式
- Apex - 許可權限制
- Apex - 批處理
- Apex - 除錯
- Apex - 測試
- Apex - 部署
- Apex 有用資源
- Apex - 快速指南
- Apex - 資源
- Apex - 討論
Apex - 觸發器
Apex觸發器類似於儲存過程,在特定事件發生時執行。觸發器在記錄上發生事件之前和之後執行。
語法
trigger triggerName on ObjectName (trigger_events) { Trigger_code_block }
執行觸發器
以下是我們可以觸發觸發器的事件:
- 插入
- 更新
- 刪除
- 合併
- Upsert
- 取消刪除
觸發器示例1
假設我們收到一個業務需求,需要在客戶的“客戶狀態”欄位從“非活動”更改為“活動”時建立一個發票記錄。為此,我們將按照以下步驟在APEX_Customer__c物件上建立一個觸發器:
步驟1 - 轉到sObject
步驟2 - 點選客戶
步驟3 - 點選觸發器相關列表中的“新建”按鈕,並新增如下所示的觸發器程式碼。
// 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 - 這是一個上下文變數,它儲存當前在觸發器上下文中的記錄,無論是插入還是更新。在本例中,此變數包含已更新的客戶物件的記錄。
上下文中還有其他可用的上下文變數 – trigger.old、trigger.newMap、trigger.OldMap。
觸發器示例2
當對客戶記錄進行更新操作時,上述觸發器將執行。假設,只有當客戶狀態從“非活動”更改為“活動”時才需要插入發票記錄,而不是每次都插入;為此,我們可以使用另一個上下文變數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和舊值。
廣告