Заполнить поле поиска записью, созданной из триггера - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь создать триггер, который выполняет следующие действия:

  1. После создания учетной записи создайте несвязанную запись (называемую записью «Содержимое портала») с тем же именем,предполагая по умолчанию RecordTypeId
  2. Возьмите идентификатор только что созданной записи «Содержимое портала» и вставьте ее в поле поиска на первоначально созданной учетной записи

Мой текущий код выполняет элемент 1успешно, но когда я добавил новый код для завершения пункта 2, я получил следующую ошибку:

Line: 6, Column: 1
System.DmlException: Insert failed. First exception on row 0; first error: 
CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, newAccountCreated: execution of 
AfterInsert caused by: System.FinalException: Record is read-only 
Trigger.newAccountCreated: line 12, column 1: []

Мой текущий триггер выглядит следующим образом:

trigger newAccountCreated on Account (after insert) {

    List<Account> alist = Trigger.New;

    for(Account a : alist) {

        if (a.RecordTypeId == '012i0000001Iy1H') {
//            system.debug(a.Name);
            Portal_Content__c p = new Portal_Content__c(Name=a.Name,School_SFDC_ID__c=a.Id);
            insert p;

            a.Portal_Content_Record__c = p.Id;
            update a;
        }
    }

}

Я не понимаю, почемув сообщении об ошибке указывается, что «Запись доступна только для чтения» или как исправить эту ошибку.

1 Ответ

0 голосов
/ 26 февраля 2019

Вы не можете обновить ту же запись для триггера «после», это нужно сделать для триггера до;изменить на:

trigger newAccountCreated on Account (before insert) {
...