0

account(親) と contact (子) の 2 つの標準オブジェクトがあります。contact の lastname フィールドに account の name フィールドを入力するトリガーを書きたい

以下のトリガーは同じタスクを実行しますが、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 のトリガーが必要です

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. Contact の LastName の値を、アカウントの値で更新します (存在する場合)。

ステップ 5. 挿入する前にトリガーを発射させます。

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