Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

¿Triggers o procedimientos externos?

Estas en el tema de ¿Triggers o procedimientos externos? en el foro de Bases de Datos General en Foros del Web. Hola: Pues llevo un tiempo pensando en si es mejor realizar operaciones concatenadas en una BBDD a base de triggers (en este caso concreto hablo ...
  #1 (permalink)  
Antiguo 07/04/2016, 14:55
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
¿Triggers o procedimientos externos?

Hola:

Pues llevo un tiempo pensando en si es mejor realizar operaciones concatenadas en una BBDD a base de triggers (en este caso concreto hablo de postgresql) o es mejor que esa secuencia se haga desde el programa que la maneja.

La cosa es que pensaba que sería mejor que la secuencia la hiciera la BBDD, por aquello de que así se abstrae un poco del programa que la maneja, pero estoy viendo esta respuesta:

http://www.forosdelweb.com/4787047-post3.html

que dice justo lo contrario de lo que yo pensaba, así que estoy hecho un lío.

Un ejemplo de lo que quiero hacer.
En una comunidad de regantes tengo un propietario asociado a una parcela y he de cambiar a ese propietario. Pasos:
1.- Comprobar que el nuevo propietario ya existe en la BBDD (porque es dueño de alguna otra parcela, por ejemplo)
2.- Si no existe, crearlo.
3.- Asociar la parcela al nuevo propietario
4.- Comprobar si el antiguo propietario posee alguna parcela más o no, para darle de baja si procede.
5.- Insertar en una tabla de histórico de la parcela al nuevo propietario
6.- (alguna cosa más que se me pueda ocurrir)

En fin, que todo esto se podría hacer desde Qt (el programa que maneja la BBDD y con el que además me siento más cómodo) o a base de triggers o funciones en postgresql.

¿Qué opináis?
Saludos y gracias, como siempre!
__________________
Mi calculadora en Qt
  #2 (permalink)  
Antiguo 07/04/2016, 15:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Triggers o procedimientos externos?

Cita:
La cosa es que pensaba que sería mejor que la secuencia la hiciera la BBDD, por aquello de que así se abstrae un poco del programa que la maneja, pero estoy viendo esta respuesta:
Estimado: Si le derivas a la BBDD tareas que debería realizar la aplicación, como ya te mencioné en ese post, lo que en realidad estás haciendo es aumentando el acoplamiento entre la aplicación y la base , y no abstrayendo la aplicación.
Básicamente, estás haciendo lo contrario a lo que pretendes lograr.

Por lo demás, cuando tienes una secuencia tan compleja de cosas que deben hacerse en un sólo ciclo de ejecución no te conviene hacerlas en triggers, sino en stored procedures.
Los triggers deben usarse sólo en tareas que siempre se realicen ante una accion de ABM en una tabla, y no invocarse si son proceso de ejecución opcional.
Y aun menos si la secuencia de procesos es larga, ya que pueden afectar en funcionamiento de la BBD y de la aplicación forma nociva.

Un trigger debe ser fundamentalmente una tarea puntual, y que no requiera grandes conjuntos de validaciones. Esencialmente simple y acotada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: procedimientos, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:43.