У меня есть объемный триггер, который использует карты, чтобы избежать ограничения лимитов SOQL.Этот триггер также использует статические переменные класса для рекурсии и для ограничения запросов.
Что я делаю, когда запускается массовая операция, такая как вставка или обновление объекта, в этом случае объект Contact, затемТриггер создаст карты связанных учетных записей на первом триггере и будет использовать эти карты для остальных срабатываний триггера.
Вот пример операции, которая работает отлично, но только для After Update иОперации триггера после вставки:
Убедитесь, что переменная статического класса неверна.
Если переменная не является истинной карты построения.
Установите для статической переменной класса значение true.
Выполните операции триггера.
Для вставки /триггеры обновления, состояние сеанса поддерживается, а статическая переменная класса не сбрасывается до окончания массовой операции.
Однако для триггера перед удалением кажется, что сеанса нетсостояние, и что сеанс сбрасывается каждый раз, когда запись удаляется.Сеанс сбрасывается, но ограничения регулятора накапливаются для массового удаления записей.Таким образом, с помощью триггера перед удалением, даже если используются карты, счетчик запросов soql продолжает подсчитывать, достигая печально известного предела «Too Many Sql Queries» для удаления более 100 записей.
Любые мысли о том, как предотвратитьвхождение в лимит SOQL будет высоко ценитсяЯ нигде не смог ничего найти по этому поводу.