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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[quote="Advega"]отброс этого апдейта ничего не испортит[/quote]

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