首页 > 解决方案 > 如何为同一个对象创建两个触发器

问题描述

我有一个数据表,如果客户选择多个候选人,它将自动创建工作申请和审查记录。我为创建审查记录做了一个触发器,但问题是还有另一个要求,工作申请的面试官应该插入到审查记录中。我正在尝试创建两个将在 Job 应用程序对象上触发的触发器,但我之前没有尝试在一个对象中执行两个触发器,所以我被卡住了。

这个想法是,如果我在工作申请上编辑面试字段,那么评论对象上的面试字段也会被更新。



trigger JobApplicationTrigger on Job_Application__c (after insert) {
    if (Trigger.isAfter) {
        if(Trigger.isInsert) {
            List<Review__c> reviewList = new List<Review__c>();
    
                for(Job_Application__c jobApp : trigger.new) {
                    //review records should only contain  Interviewer and Job Application. SELECT Interviewer__c, Name FROM Job_Application__c
        
                    //create review records
                    Review__c newRev = new Review__c();
                    newRev.Interviewer__c = jobapp.Interviewer__c;
                    newRev.Job_Application__c = jobApp.Id;
                    reviewList.add(newRev);
                }
    
    
                if (reviewList.size() > 0) {
                    insert reviewList;
                }
        }   


    }

}





标签: triggersapexapex-codelwc

解决方案


从您的最后一句话中,“我的想法是,如果我在工作申请中编辑面试字段,那么审核对象上的面试字段也将被更新。” 您不必为此创建新触发器。您可以使用现有的。

以下代码段将为您提供帮助。

trigger JobApplicationTrigger on Job_Application__c(after insert, after update) {
  if (Trigger.isAfter) {
    if (Trigger.isInsert) {
      List<Review__c> reviewList = new List<Review__c>();

      for (Job_Application__c jobApp : Trigger.new) {
        //review records should only contain  Interviewer and Job Application. SELECT Interviewer__c, Name FROM Job_Application__c

        //create review records
        Review__c newRev = new Review__c();
        newRev.Interviewer__c = jobapp.Interviewer__c;
        newRev.Job_Application__c = jobApp.Id;
        reviewList.add(newRev);
      }

      if (reviewList.size() > 0) {
        insert reviewList;
      }
    }
    // New Code
    if (Trigger.isUpdate) {
      List<Review__c> reviewList = new List<Review__c>();

      for (Job_Application__c jobApp : Trigger.new) {
      //create review records if value of Interviewer__c is changed on Job_Application__c
        if(jobapp.Interviewer__c!=Trigger.oldMap(jobApp.Id.Interviewer__c)){
          Review__c newRev = new Review__c();
          newRev.Interviewer__c = jobapp.Interviewer__c;
          newRev.Job_Application__c = jobApp.Id;
          reviewList.add(newRev);
        }
      }

      if (reviewList.size() > 0) {
        // update exising review records
        update reviewList;
      }
    }
  }
}

推荐阅读