2014-07-17 4 views
0

두 개의 표준 개체 인 account (parent)와 contact (child)가 있습니다. 나는 계정의 성 필드와 연락처의 성 필드를 채우는 방아쇠를 쓰고 싶습니다"parent to child"관계 쿼리를 사용하여 부모 개체의 자식 필드를 채우는 트리거

아래의 트리거는 동일한 작업을 수행하지만 soql 쿼리는 하위에서 상위로 진행됩니다.

같은 작업을 수행하지만 부모에서 자식으로 soql 쿼리 (관계 쿼리)를 사용하는 트리거를 원합니다.

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

2 단계 선택 관련 계정을 Map<Id,Account>로 사용 :

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; 
} 
} 

은 내가

답변

1

단계 1. 이 계정 ID의 Set<id> 구축이 .help에 대한 트리거를 원하는

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

S tep 3. 을 반복하고 trigger.new을 반복하여지도에서 해당 계정을 추출하십시오.

4 단계 귀하의 계정에있는 값과 연락 할 때 LastName 값을 업데이트합니다 (존재하는 것으로 가정).

5 단계 은 삽입 전에 트리거 화재합니다

trigger trgSetLastName on Contact (before insert, before update)