首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子对象上的顶点触发器更新选择列表

子对象上的顶点触发器更新选择列表
EN

Stack Overflow用户
提问于 2021-07-06 18:55:09
回答 1查看 137关注 0票数 0

我正在尝试做一些简单的事情(我希望如此)。我有两个对象: Contact和Career_Path__c Contact有一个字段: Currency__c (picklist) Career_Path__c有一个字段: Next_Currency__c (picklist)这两个对象通过从Career_Path__c到Contact的循环关系相互关联

每次创建新的Career_Path__c记录时,我都会尝试更新Next_Currency__c字段。这似乎不起作用。谢谢你的建议。

代码语言:javascript
复制
trigger Trigger_dynPicklist_2 on Contact (after insert) {    

Map<Id, String> contactIdToCareerPathMap = new Map<Id, String>();

for (Contact c : Trigger.new) {
    if (String.isNotBlank(c.Id)) {
    //System.debug('El contacto tiene id: '+c.Id);
    contactIdToCareerPathMap.put(c.Id, c.Currency__c);
    }
}

List<Career_Path__c> careerPathToUpdate = [SELECT Id, Next_Currency__c, Contact__c
                                                FROM Career_Path__c
                                                WHERE Contact__c IN :contactIdToCareerPathMap.keySet()
                                          ];

if(careerPathToUpdate.size() > 0){
    //System.debug('Tiene hijos');
    for (Career_Path__c career : careerPathToUpdate) {
        //System.debug('hijos: '+ career.id);
        career.Next_Currency__c = contactIdToCareerPathMap.get(career.Contact__c);
    }
    update careerPathToUpdate;
}

}

EN

回答 1

Stack Overflow用户

发布于 2021-07-07 16:54:28

当您实际需要在Career_Path__c SObject上设置触发器时,您正在尝试设置触发器。您的代码应该如下所示,以实现从相关联系人Currency__c自动填充触发器(还请注意,触发器现在将是BEFORE insert,因此您不需要再次更新记录):

代码语言:javascript
复制
trigger Trigger_dynPicklist_2 on Career_Path__c (before insert) {
    Set<Id> relatedContactsIds = new Set<Id>();
    for (Career_Path__c path : Trigger.new) {
        if (path.Contact__c != null) {
            relatedContactsIds.add(path.Contact__c);
        }
    }
    
    Map<Id, Contact> relatedContactsMap = [SELECT Id, Currency__c FROM Contact WHERE Id IN :relatedContactsIds AND Currency__c != NULL];

    for (Career_Path__c path : Trigger.new) {
        if (path.Contact__c != null && relatedContactsMap.containsKey(path.Contact__c)) {
            path.Next_Currency__c = relatedContactsMap.get(path.Contact__c).Currency__c;
        }
    }
}

还要注意,当联系人刚创建时(并且您在插入时触发),它不能有相关的Career_Path__c对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68269278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档