Регистрация  |  Вход

события триггера

trigger OpportunityRemoteUpdate on Opportunity (after update, after delete) {
System.debug('OpportunityRemoteUpdate');
}

Данный триггер срабатывает в случае insert, update, clone, delete

Есть ли смысл писать
trigger OpportunityRemoteUpdate on Opportunity (after insert, after update, after clone, after delete) {}
?

Snn
trigger OpportunityRemoteUpdate on Opportunity (after update, after delete) {
    System.debug('OpportunityRemoteUpdate');
}

Данный триггер срабатывает в случае insert, update, clone, delete

Есть ли смысл писать 
trigger OpportunityRemoteUpdate on Opportunity (after insert, after update, after clone, after delete) {}
?

OpportunityRemoteUpdate должен срабатывать только после update и после delete (как написано в параметрах)

т.е. "Данный триггер срабатывает в случае insert, update, clone, delete" не верно

при insert и при clone срабатывать не должен.

Другое дело если у вас на opportunity висит сложная логика (другой триггер), который может запускать update после insert (clone это тот же самый insert) то в этом случае вы увидите сообщение в дебаге. Такое поведение скорее ошибка проектирования, но я пару раз с таким встречался на оргах заказчиков

так что
trigger OpportunityRemoteUpdate on Opportunity (after insert, after update, after clone, after delete)
во первых не правильно - нет такого after clone
во вторых да - есть смысл писать если вы хотите охватить все события.

Писать триггеры это одна из сложнейших задач в salesforce. И части из-за неправильного проектирования они становятся источниками проблем.

OpportunityRemoteUpdate должен срабатывать только после update и после delete (как написано в параметрах)

т.е. "Данный триггер срабатывает в случае insert, update, clone, delete" не верно

при insert и при clone срабатывать не должен.

Другое дело если у вас на opportunity висит сложная логика (другой триггер), который может запускать update после insert (clone это тот же самый insert) то в этом случае вы увидите сообщение в дебаге. Такое поведение скорее ошибка проектирования, но я пару раз с таким встречался на оргах заказчиков

так что 
trigger OpportunityRemoteUpdate on Opportunity (after insert, after update, after clone, after delete) 
во первых не правильно - нет такого after clone
во вторых да - есть смысл писать если вы хотите охватить все события.

Писать триггеры это одна из сложнейших задач в salesforce. И части из-за неправильного проектирования они становятся источниками проблем.

Я открывал дебагер и смотрел выполняется ли мой триггер.

в случае события after update срабатывает для insert update и clone
но не срабатывает для delete

Поэтому и сделал trigger OpportunityRemoteUpdate on Opportunity (after update, after delete) {}

Тоесть вроди бы отрабатывается для всех событий.
Не выполнится ли тригер дважды для события insert если написать trigger OpportunityRemoteUpdate on Opportunity (after insert, after update, after delete) {}
?

Snn
Я открывал дебагер и смотрел выполняется ли мой триггер.

в случае события after update срабатывает для insert update и clone
но не срабатывает для delete

Поэтому и сделал trigger OpportunityRemoteUpdate on Opportunity (after update, after delete) {}

Тоесть вроди бы отрабатывается для всех событий.
Не выполнится ли тригер дважды для события insert если написать trigger OpportunityRemoteUpdate on Opportunity (after insert, after update, after delete) {}
?

Так сложно по вашим словам понять что у вам на орге происходит.

Триггер срабатывает на определенную DML операцию. Их есть всего три: insert, update, delete (есть еще upsert но пока голову ей не забывайте). Сlone не относится к DML операциям и ничего не делает с базой данных. Он просто создает копию объекта.

Вот как только происходит одна из этих трех операций (insert, update, delete) срабатывает триггер, у которого написано когда и после какой команды срабатывать.

Т.е. если вы делаете insert, то сработает в вашем случае after insert - триггер запустится. Тоже самое с остальными командами.

Если вы хотите чтобы срабатывало только после update и delete, то так и указывайте (after update, after delete)

Так сложно по вашим словам понять что у вам на орге происходит.

Триггер срабатывает на определенную DML операцию. Их есть всего три: insert, update, delete (есть еще upsert но пока голову ей не забывайте). Сlone не относится к DML операциям и ничего не делает с базой данных. Он просто создает копию объекта.

Вот как только происходит одна из этих трех операций (insert, update, delete) срабатывает триггер, у которого написано когда и после какой команды срабатывать.

Т.е. если вы делаете insert, то сработает в вашем случае after insert - триггер запустится. Тоже самое с остальными командами. 

Если вы хотите чтобы срабатывало только после update и delete,  то так и указывайте (after update, after delete)