trigger, job en oracle ¿que elegir?

Koji Nanjo

Sushiman
Se incorporó
21 Marzo 2006
Mensajes
1.725
Cabros me van a ver creando hartos temas acá :zippy, estoy en un proyecto que nadie mueve la raja y me aburre estar esperando que los wns "especialistas" hagan algo 10 meses después cuando son webadas que se pueden sacar de una patá.

Les traigo otras 2 dudas/problemáticas.

Tengo una tabla que se va a actualizar cada cierto tiempo, el tema es que debo registrar la fecha de modificación. Por ahora le agregué un campo timestamp y un trigger para que cuando se haga update o insert se agregue, funciona. Por otro lado había pensado hacer una tabla que guarde la tabla, fila y fechas de la modificación pero no se cual de las opciones es la más "elegante" o por si hay una tercera no se...

La otra duda es que luego de saber quien chucha se actualizó debo enviar un dato de esa fila modificada a un servicio por http. Mi ideal es que se gatille una vez que se actualizó o insertó en la tabla así que pensaba en un trigger, pero acá proponen un job, tengo entendido que los jobs funcionan parecido a los cronjob, onda corren con cierta periocidad.
¿que será ma' mejol?

gracias :D
 

Cosme

Gold Member
Se incorporó
27 Febrero 2005
Mensajes
8.276
Yo podría un campo auto tipo date-time y que el valor por defecto sea now; eso podría ahorrarte el trigger.

Te recomiendo usar store_procedures para hacer estas pegas porque es mas facil para el desarrollador del lado http manejar su logica, mientras tu manejas la logica de la DB, y allí haces todas las comprobaciones/validaciones/arreglines y demases que requieras en el modelo de la DB.
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.766
Yo podría un campo auto tipo date-time y que el valor por defecto sea now; eso podría ahorrarte el trigger.

Te recomiendo usar store_procedures para hacer estas pegas porque es mas facil para el desarrollador del lado http manejar su logica, mientras tu manejas la logica de la DB, y allí haces todas las comprobaciones/validaciones/arreglines y demases que requieras en el modelo de la DB.

El trigger incorpora lógica plsql de stored procedured.

La mano es trigger, @Koji Nanjo . Tal como lo mencionas, puedes crear una segunda tabla de auditoría que se alimente del trigger. El trigger va asociado a la tabla en cuestión y puedes definirle que se active al insert, delete y update, y que te guarde los datos originales antes del cambio (en el caso de delete y update) y un campo de tipo fecha que almacene automáticamente la hora del sistema. De esa manera, esa auditoría es transparente a la aplicación.

Otra opción es habilitar la auditoría de oracle. Esto implica que el DBA deba activar los parámetros para que la auditoría sea precisa a una tabla en particular, y todos los registros de auditoría se almacenan en una tabla de sistema (SYS.AUD$).

Si propones trigger no va a faltar el dba alumbrado que diga que "es mejor la auditoría de Oracle porque bla-bla-bla".
Si propones auditoría de Oracle, el dba puede alegar que le estás cargando pega encima, que va a tener que administrar la huea, etc, etc.

La ventaja que tiene el trigger sobre la tabla es que como se basa en un procedimiento almacenado puedes meterle un poco de inteligencia y además el código queda del lado del equipo de desarrollo.
 
Upvote 0

Koji Nanjo

Sushiman
Se incorporó
21 Marzo 2006
Mensajes
1.725
dale, me quedo con el trigger (además ya lo hice :X) ahora voy a hacer que gatille un procedure para que lance el dato por http.

gracias a todos :D
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.766
dale, me quedo con el trigger (además ya lo hice :X) ahora voy a hacer que gatille un procedure para que lance el dato por http.

gracias a todos :D

El mismo trigger puede llevar la lógica programada dentro con plsql. En el transantiago lo hacíamos así
 
Upvote 0

leshowski

Retamos City
Se incorporó
31 Enero 2006
Mensajes
1.207
Ojo, considera lo siguiente. Triggers con mucha lógica de negocio están propensos a gatillar errores, ya sea por reglas de negocio o por mala programación. Si tienes sistemas interactuando con estas tablas, esos errores pueden ser propagados a los usuarios, no estando relacionados necesariamente a sus sistemas. En esos casos, yo prefiero encapsular el procesamiento, posibles errores, en un stored procedure y programarlo en un job.

Saludos.


Enviado desde mi HUAWEI MT7-L09 mediante Tapatalk
 
Última modificación:
Upvote 0
Subir