触发器使用来自" parent to child"的关系查询从父对象填充子字段

时间:2014-07-17 16:32:41

标签: salesforce apex-code salesforce-chatter

我们有两个标准对象帐户(父)和联系人(子)。我想写一个触发器,用姓名字段

填充联系人的姓氏字​​段

下面的触发器执行相同的任务,但是soql查询是从子节点到父节点。

我希望触发器执行相同的工作,但是使用从父级到子级的soql查询(关系查询)。

trigger trgSetLastName on Contact (after insert) 
{
List<Contact> lstConUpdate = new List<Contact>();
List<Contact> lstContact = [select id,Account.Name from Contact where 
id in:  trigger.newmap.keyset()];
for(Contact con: lstContact)
{
    con.LastName = con.Account.Name;
    lstConUpdate.add(con);
}
if(lstConUpdate.size() > 0){
    update lstConUpdate;
}
}

我想要一个触发器.help

1 个答案:

答案 0 :(得分:1)

第1步。 建立Set<id>帐户ID:

for (Contact c : trigger.new){
    acctIdSet.add(c.AccountId);
}

第2步。 使用以下选项将相关帐户选入Map<Id,Account>

[SELECT {fields}
FROM Account
WHERE Id IN :acctIdSet];

第3步。 循环浏览trigger.new并从地图中提取相应的帐户。

第4步。 更新与您帐户上的值相关联的LastName值 - 假设它存在。

第5步。 在插入之前触发触发器:

trigger trgSetLastName on Contact (before insert, before update)