2013-12-12 1 views
1

계정을 편집 할 때 업데이트되는 계정 개체의 필드가 있습니다. 레코드를 개별적으로 편집하면 올바른 값이 필드에 기록됩니다. 데이터 로더를 사용할 때. . . 하나의 값은 모든 레코드에 적용됩니다. 여기 내 방아쇠가 제발, 조언하시기 바랍니다.Apex 트리거 - 데이터 로더를 사용할 때 잘못된 값

trigger Populate_Transfer_Manager on Account (before insert, before Update) { 

    list<id> aid = new list<id>(); 
    for(account a: trigger.new){   
     aid.add(a.ownerid); 
    } 

list<user> managers = new list<user>(); 
    managers = [select managerid from user where id in: aid]; 


set<id> manid = new set<id>();        
    for(user u: managers){ 
     manid.add(u.managerid); 
    } 


for(account a: trigger.new){   
    for(id i: manid){   
      a.transfer_manager__c = i;  
     } 
    } 
} 
+1

지도를 사용하여 알아 냈습니다. 나는 8 시간 동안 해결책을 게시 할 수 없다. 오늘 나중에 게시 할 예정입니다. – Berg

+0

마음을 업데이트해도 다른 사람들이 실수로 배울 수 있습니까? –

답변

0

트리거는 200의 각 배치에 대해 한 번만 실행되었고 배치의 모든 레코드에 값을 할당했습니다. 지도를 사용하여 데이터베이스의 모든 레코드에 올바른 값을 할당 할 수있었습니다.

trigger Populate_Transfer_Manager on Account (before insert, before Update) {  

    list<id> aid = new list<id>(); 
    for(account a: trigger.new){     
     aid.add(a.ownerid); 
      } 
    map<id, user> users = new map<id, user>(
     [select managerid from user where id in: aid]); 

    for(account a: trigger.new){ 
     a.Transfer_Manager__c = users.get(a.ownerid).managerid; 
    } 
}