- Apex 编程教程
- 顶点 - 主页
- Apex - 概述
- 顶点 - 环境
- 顶点 - 示例
- Apex - 数据类型
- Apex - 变量
- Apex - 弦乐
- Apex - 数组
- Apex - 常量
- Apex - 决策
- 顶点 - 循环
- Apex - 集合
- Apex - 课程
- Apex - 方法
- Apex - 对象
- Apex - 接口
- Apex-DML
- Apex - 数据库方法
- 顶点 - SOSL
- 顶点-SOQL
- 顶点 - 安全
- Apex - 调用
- Apex - 触发器
- Apex - 触发器设计模式
- Apex - 调节器限制
- Apex - 批处理
- Apex - 调试
- Apex - 测试
- Apex - 部署
- Apex 有用资源
- Apex - 快速指南
- Apex - 资源
- Apex - 讨论
Apex - 触发器
Apex 触发器就像存储过程,在特定事件发生时执行。触发器在记录的事件发生之前和之后执行。
句法
trigger triggerName on ObjectName (trigger_events) { Trigger_code_block }
执行触发器
以下是我们可以触发触发器的事件 -
- 插入
- 更新
- 删除
- 合并
- 更新插入
- 取消删除
触发示例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 - 这是上下文变量,用于存储当前在触发器上下文中插入或更新的记录。在本例中,该变量具有已更新的 Customer 对象的记录。
上下文中还有其他可用的上下文变量——trigger.old、trigger.newMap、trigger.OldMap。
触发示例2
当对客户记录进行更新操作时,将执行上述触发器。假设只有当客户状态从 Inactive 变为 Active 时才需要插入发票记录,而不是每次都需要插入;为此,我们可以使用另一个上下文变量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 和旧值。