Tengo una Object
tabla que se completa desde un servicio integrado ( que puedo cambiar si es necesario ) desde otra base de datos. En ciertos puntos, necesitamos agregar manualmente publicaciones en otra tabla ObjectObjectGroup (ObjectId, ObjectGroupId)
que es necesaria si Object.ObjectType
tiene un cierto valor entero. Dado que el servicio de integración no maneja ese tipo de actualización, estoy pensando en agregar un desencadenador a la tabla Object que en pseudocódigo sería el siguiente:
if Object.ObjectType = 10
begin
if Object.ObjectNumber like '<string pattern>'
begin
insert into ObjectObjectGroup values...
end
end
¿Es sabia esta configuración, o hay una mejor manera en términos de rendimiento?
fuente
Los disparadores son una herramienta poderosa y, como cualquier otra herramienta, debes tener cuidado al usarlos.
Cuando comete un error en un disparador, las cosas pueden salir DRÁSTICAMENTE mal y, a menos que esté ejecutando rastros, no se dará cuenta ...
Cambian / insertan / eliminan 'mágicamente' datos que el usuario de la base de datos (la aplicación actual / cualquier aplicación futura / un desarrollador que realice una actualización única) no realizó / tuvo la intención.
El gran problema es que después de haber creado el desencadenante, no es obvio para otros desarrolladores / usuarios que un desencadenante está ahí y lo que hace.
Dicho esto, son una gran herramienta para mantener la integridad de sus datos y para una verdadera auditoría de los cambios.
Debe preguntarse si la lógica que desea poner en el gatillo se adapta mejor a la (s) aplicación (es) o dentro del DB, sopesando los riesgos en ambos lados (qué sucede si aparece una nueva aplicación y no hace cumplir esto ¿regla?)
fuente