У меня есть Object
таблица, которая заполняется из интегрированной службы ( которую я могу изменить при необходимости ) из другой базы данных. В определенные моменты нам нужно вручную добавлять записи в другую таблицу, ObjectObjectGroup (ObjectId, ObjectGroupId)
которая необходима, если они Object.ObjectType
имеют определенное целочисленное значение. Поскольку служба интеграции не обрабатывает такого рода обновления, я подумываю добавить триггер к таблице объектов, который в псевдокоде будет следующим:
if Object.ObjectType = 10
begin
if Object.ObjectNumber like '<string pattern>'
begin
insert into ObjectObjectGroup values...
end
end
Это мудрая настройка или есть лучший способ с точки зрения производительности?
источник
Триггеры являются мощным инструментом, и, как и любой другой инструмент, вы должны быть осторожны при их использовании.
Когда вы делаете ошибку в триггере, все может ДРАСТИЧЕСКИ ошибаться, и если вы не выполняете трассировку, вы не поймете ...
Они «волшебным образом» изменяют / вставляют / удаляют данные, которые пользователь БД (текущее приложение / любое будущее приложение / разработчик, выполняющий одноразовое обновление) не осознал / намеревался.
Большая проблема заключается в том, что после того, как вы создали триггер, другим разработчикам / пользователям не очевидно, что триггер есть и что он делает.
Тем не менее, они являются отличным инструментом для поддержания целостности ваших данных и для истинного аудита изменений.
Вы должны спросить себя, подходит ли логика, которую вы хотите поместить в триггер, лучше всего с приложениями или внутри БД, взвесив риски с обеих сторон (что происходит, если новое приложение появляется и не применяет это править?)
источник