Тригер, который перетирает изменения, возвращая все как было

Тригер, который перетирает изменения, возвращая все как было

Получил задание сделать тригер, который перетирает определенные изменения, возвращая все как было.

Задача не выглядит сложной, но выглядит необычной: зачем вообще кто-то делает изменения, которые нужно перетирать на "как было".

Например, есть интеграция с DocuSign и оттуда меняется Статус. И иногда интеграция срабатывает второй раз и позже, когда это статус уже ушел на другое значения. И бороться с этим на стороне DocuSign невозможно, нужно как-то решить на нашей стороне. И нужен тригер, который перетирает изменения, возвращая все как было. Разумеется можно просто ставить блок в тригере или в вал руле на такое изменение , но зачем так грубо бороться с ситуацией, ведь там не человек, которому имеет смысл что-то объяснять через сообщение, там бездушная интеграция

конечно, можно было бы организовать интеграцию немного по-другому, не давая прямого доступа к Статусу, а на своей стороне выполнять условно (только однажды) эту логику, но уже сделано как сделано, и попробую написать тригер, который на before Update в определенных условиях перетирает новые значения на старые

Разумеется можно просто ставить блок в триггере или в вал руле на такое изменение , но зачем так грубо бороться с ситуацией, ведь там не человек, которому имеет смысл что-то объяснять через сообщение, там бездушная интеграция

Все таки предназначение валидации не только в объяснении чего-то через сообщение, но и в сохранении качества наших данных, будь то бездушный юзер или интеграция, разве не так? Поэтому счел бы этот путь вполне логичным, если конечно отброс этого апдейта ничего не испортит.

А так да, остается костыль. Вместо того, чтобы ставить сетку от мух, придется их ловить и отправлять обратно :D

Advega
отброс этого апдейта ничего не испортит

есть опасения, что DocuSign не правильно поймет, если мы выкинем ошибку через тригер, и просто попытается позже снова сделать то же самое

Interesting information? Help us, post link to social media..