После вставки триггер на ContentDocumentLink запускается дважды для 1 записи. Как предотвратить то же самое? - PullRequest
0 голосов
/ 23 февраля 2020

Когда итерируется по Trigger.new для ContentDocumentLink, я пытаюсь отфильтровать некоторые записи ContentDocumentLink на основе сущности, с которой он связан. (Фрагмент кода ниже.) System.debug показывает те же результаты, но дважды через некоторое время мс интервал. Это приводит к тому, что моя функциональность запускается дважды, как мне предотвратить то же самое?

if(govAgreementIds !=null){
        for(ContentDocumentLink att:(List<ContentDocumentLink>)Trigger.new){
            if(govAgreementIds.contains(att.LinkedEntityId)){
                finalcdId.add(att.ContentDocumentId);
            }
        }
    }

    System.debug('finalcdId>> '+finalcdId);

Журналы отладки: 17: 08: 07: 232 USER_DEBUG [251] | DEBUG | finalcdId> > {0698A000000eg6bQAA} 17: 08: 08: 528 USER_DEBUG [251] | DEBUG | finalcdId >> {0698A000000eg6bQAA}

1 Ответ

0 голосов
/ 24 февраля 2020
Same ContentDocumentId can be shared across multiple LinkedEntityId's. your if condition checking LinkedEntityId. There may be multiple linkentity ID's for same ContentDocumentId. You need to implement code as below

if(govAgreementIds !=null){
        for(ContentDocumentLink att:(List<ContentDocumentLink>)Trigger.new){
            if(govAgreementIds.contains(att.LinkedEntityId)){
              if (!finalcdId.contains(att.ContentDocumentId)) { 
                    finalcdId.add(att.ContentDocumentId);
                   }
              }
        }
    }
...