triggers - 如何为同一个对象创建两个触发器
问题描述
我有一个数据表,如果客户选择多个候选人,它将自动创建工作申请和审查记录。我为创建审查记录做了一个触发器,但问题是还有另一个要求,工作申请的面试官应该插入到审查记录中。我正在尝试创建两个将在 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;
}
}
}
}
解决方案
从您的最后一句话中,“我的想法是,如果我在工作申请中编辑面试字段,那么审核对象上的面试字段也将被更新。” 您不必为此创建新触发器。您可以使用现有的。
以下代码段将为您提供帮助。
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;
}
}
}
}
推荐阅读
- java - nginx.conf 中的“location /logs”和“location /logs/”有什么区别
- javascript - 如何在具有背景颜色的同时一一粘贴标题?
- scala - Scala 以列表为键、字符串为值的地图展平
- ios - HTML
- python - 描述中提到的具有所有子图的大图
- java - 我正在制作一个简单的 JavaFx 程序。只需一个按钮即可查看错误
- vb.net - 有人如何从数据库表中选择 datat 到树视图控件 VB.NET?
- javascript - Javascript Audio Play() 函数在 Microsoft Edge 中无法正常工作
- java - MySQL - Java - 使用定义的方法执行 - 语句
- c# - 如何使用 LINQ 检查一个元素或另一个元素中的元素是否存在?