2017-10-05 12 views
0
내가 갱신 트리거 후 다음을 만든하지만 난 그것을 저장해야 드릴 수 없습니다

, 나는 꽤 undetstand 왜세일즈 포스 업데이트 트리거가

trigger Adhoc_Approval_process_trigger on Ad_Hoc_Approval__c (after update) { 

    list<Ad_Hoc_Approval__c> ladh= new list<Ad_Hoc_Approval__c>(); 
    list<Ad_Hoc_Approval__c> query=[select Status__c,Submitted_for_Approval_Date__c from Ad_Hoc_Approval__c]; 
    for(Ad_Hoc_Approval__c adh : query) 
    { 
     if(adh.Status__c =='Submitted for Approval') 
     { 
      adh.Submitted_for_Approval_Date__c=Date.today(); 
      ladh.add(adh); 
     } 

    } 

    update ladh; 

} 

작동하지 않습니다하지 않습니다 후 나는 또한 그것을 변환 한 업데이트 트리거하기 전에, 그것은 누군가가 나에게 이유를 이해하는 데 도움이 바랍니다 수 있습니다, 잘

trigger Adhoc_Approval_process_trigger on Ad_Hoc_Approval__c (before update) { 

     for(Ad_Hoc_Approval__c adh : trigger.new) 
     { 
      if(adh.Status__c =='Submitted for Approval') 
      { 
       adh.Submitted_for_Approval_Date__c=Date.today(); 

      } 

     } 



    } 

감사합니다 당신은 의미

답변

1

가 컴파일되지 않는 한 저장에 실패 많이 일하고있어? 흠, 한눈에 잘 보이고, 오류가 있습니까?

첫 번째 버전은 끝내주는 루프가 될 것입니다. :) update -> update -> update ... 쿼리에는 WHERE 절이 없으므로 10,0001에 도달하면 결국에는 폭발하게됩니다. 레코드 ...

두 번째 버전이 훨씬 더 좋습니다 :) 현재 트리거의 범위에서만 작동하고 "업데이트 전"으로 데이터베이스에 무료로 저장됩니다.

+0

답장을 보내 주셔서 감사합니다. 틀린 것이 있으면 수정하십시오. DML을 다른 개체로 업데이트하는 경우 동일한 개체에 대한 업데이트 후에 DML을 사용할 수 없습니까? – Sam

+0

일반적으로 "LOW ROW UNABLE TO LOW"오류가 발생하지 않습니다. 정말 필요한 경우 트릭이 있지만 그 다음에는 무한 루프에 들어 가지 않도록 보장하고 결국 총재 한도 위반으로 인해 해산되는 것이 귀하의 임무입니다. 그러나 당신은'trigger.new'의 범위에없는 다른 객체를 삽입, 업데이트, 삭제할 수 있습니다. – eyescream

+0

지금은 의미가 있습니다. – Sam