1

アカウントが編集されると更新されるアカウント オブジェクトにフィールドがあります。レコードを個別に編集すると、正しい値がフィールドに書き込まれます。データローダーを使用する場合。. . 1 つの値がすべてのレコードに適用されます。これが私の引き金です、アドバイスしてください。

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

1 に答える 1

0

トリガーは、200 個のバッチごとに 1 回だけ起動し、バッチ内のすべてのレコードに値を割り当てていました。マップを使用して、データベース内のすべてのレコードに正しい値を割り当てることができました。

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;
    }
}
于 2013-12-17T17:15:54.767 に答える