0

我们有两个标准对象 account(parent) 和 contact (child )。我想编写一个触发器来用帐户的名称字段填充联系人的姓氏字​​段

下面的触发器执行相同的任务,但 sql 查询是从 child 到 parent 。

我想要执行相同工作但使用从父到子的 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 的触发器

4

1 回答 1

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. 将联系时的姓氏值更新为您帐户上的值 - 假设它存在。

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

trigger trgSetLastName on Contact (before insert, before update) 
于 2014-07-28T00:22:45.600 回答