Получил задание сделать тригер, который перетирает определенные изменения, возвращая все как было.
Задача не выглядит сложной, но выглядит необычной: зачем вообще кто-то делает изменения, которые нужно перетирать на "как было".
Например, есть интеграция с DocuSign и оттуда меняется Статус. И иногда интеграция срабатывает второй раз и позже, когда это статус уже ушел на другое значения. И бороться с этим на стороне DocuSign невозможно, нужно как-то решить на нашей стороне. И нужен тригер, который перетирает изменения, возвращая все как было. Разумеется можно просто ставить блок в тригере или в вал руле на такое изменение , но зачем так грубо бороться с ситуацией, ведь там не человек, которому имеет смысл что-то объяснять через сообщение, там бездушная интеграция
конечно, можно было бы организовать интеграцию немного по-другому, не давая прямого доступа к Статусу, а на своей стороне выполнять условно (только однажды) эту логику, но уже сделано как сделано, и попробую написать тригер, который на before Update в определенных условиях перетирает новые значения на старые
Получил задание сделать тригер, который перетирает определенные изменения, возвращая все как было. Задача не выглядит сложной, но выглядит необычной: зачем вообще кто-то делает изменения, которые нужно перетирать на "как было". Например, есть интеграция с DocuSign и оттуда меняется Статус. И иногда интеграция срабатывает второй раз и позже, когда это статус уже ушел на другое значения. И бороться с этим на стороне DocuSign невозможно, нужно как-то решить на нашей стороне. И нужен тригер, который перетирает изменения, возвращая все как было. Разумеется можно просто ставить блок в тригере или в вал руле на такое изменение , но зачем так грубо бороться с ситуацией, ведь там не человек, которому имеет смысл что-то объяснять через сообщение, там бездушная интеграция конечно, можно было бы организовать интеграцию немного по-другому, не давая прямого доступа к Статусу, а на своей стороне выполнять условно (только однажды) эту логику, но уже сделано как сделано, и попробую написать тригер, который на before Update в определенных условиях перетирает новые значения на старые
Все таки предназначение валидации не только в объяснении чего-то через сообщение, но и в сохранении качества наших данных, будь то бездушный юзер или интеграция, разве не так? Поэтому счел бы этот путь вполне логичным, если конечно отброс этого апдейта ничего не испортит.
А так да, остается костыль. Вместо того, чтобы ставить сетку от мух, придется их ловить и отправлять обратно :D
[quote]Разумеется можно просто ставить блок в триггере или в вал руле на такое изменение , но зачем так грубо бороться с ситуацией, ведь там не человек, которому имеет смысл что-то объяснять через сообщение, там бездушная интеграция[/quote] Все таки предназначение валидации не только в объяснении чего-то через сообщение, но и в сохранении качества наших данных, будь то бездушный юзер или интеграция, разве не так? Поэтому счел бы этот путь вполне логичным, если конечно отброс этого апдейта ничего не испортит. А так да, остается костыль. Вместо того, чтобы ставить сетку от мух, придется их ловить и отправлять обратно :D
есть опасения, что DocuSign не правильно поймет, если мы выкинем ошибку через тригер, и просто попытается позже снова сделать то же самое
[quote="Advega"]отброс этого апдейта ничего не испортит[/quote] есть опасения, что DocuSign не правильно поймет, если мы выкинем ошибку через тригер, и просто попытается позже снова сделать то же самое