我们有两个标准对象帐户(父)和联系人(子)。我想写一个触发器,用姓名字段
填充联系人的姓氏字段下面的触发器执行相同的任务,但是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
答案 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)