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

Dudas sobre triggers, para entendidos en pl-pgsql

Estas en el tema de Dudas sobre triggers, para entendidos en pl-pgsql en el foro de PostgreSQL en Foros del Web. Hola, a todos. Tengo unas dudas de conceptos que me gustaria que alguien me las pudiera resolver: Va relacionado con el tema de triggers: 1-¿Cuando ...
  #1 (permalink)  
Antiguo 29/04/2007, 03:01
 
Fecha de Ingreso: abril-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Dudas sobre triggers, para entendidos en pl-pgsql

Hola, a todos. Tengo unas dudas de conceptos que me gustaria que alguien me las pudiera resolver:

Va relacionado con el tema de triggers:

1-¿Cuando se utiliza el before y after a la hora de disparar un trigger?, porque muchas veces, parece como si diera igual usar uno que otro. ¿Cuando conviene utilizar uno cuando el otro?

2.- la clausula for each hace que te recorra cada tupla de la tabla , pero la clausula statement, ¿recorre toda la tabla sin necesidad de hacer un for?. ¿Lo mismo que antes, cuando conviene utilizar uno y cuando otro?

3.- Cuando el trigger devuelve null, ¿significa que no hace nada sobre la sentencia?, entonces, ¿como se refleja esa operacion, que no devuelve nada en la tabla?, ¿significa eso que si devuelve null, se utiliza solo sacar mensajes por pantalla?

4.- El que devuelva new ¿significa que es entonces cuando nos va a permitir hacer modificaciones en la tabla?


A ver si me podeis echar una mano en aclararmelo

Un saludo y gracias por todo.
  #2 (permalink)  
Antiguo 30/04/2007, 14:45
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Dudas sobre triggers, para entendidos en pl-pgsql

La variable NEW se puede modificar, pero si es para calcular un valor algo asi, estan las denominadas reglas en cada tabla.

Tu en el before puedes validar condiciones antes de alterar el regiastro, y en el after puedes actualizar otras tablas con los nuevos valores.

Recomendacion:
Leerse el manual de postrgesql, todas estras cosas las explican en el manual, si estas en Windows o Linux, el postgresql viene con una herramienta visual llamada pgadmin, ahi hay un icono de ayuda el cual te mostrara el manual.

Saludos.
  #3 (permalink)  
Antiguo 06/04/2011, 16:10
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Respuesta: Dudas sobre triggers, para entendidos en pl-pgsql

Buenas tardes
Por puntos:

1-¿Cuando se utiliza el before y after a la hora de disparar un trigger?, porque muchas veces, parece como si diera igual usar uno que otro. ¿Cuando conviene utilizar uno cuando el otro?
Rpta:Para nada da igual.... porque si lo defines como before, el trigger se va a disparar antes de ejecutar la acción sobre la tabla, por el contrario si defines un after, el trigger se va a disparar después de ejecutada la acción y en dependencia del return de la función, las acciones que definas en la función de tipo trigger se van a hacer o no, por ejemplo:
Una función de tipo trigger que devuelva null, si el trigger está definido como before, quiere decir que nada de lo que defininiste en el trigger se va a realizar.

2.- la clausula for each hace que te recorra cada tupla de la tabla , pero la clausula statement, ¿recorre toda la tabla sin necesidad de hacer un for?. ¿Lo mismo que antes, cuando conviene utilizar uno y cuando otro?
Rpta: En postgre no existe diferencia entre uno u otro, porque definas lo que definas siempre se va a ser for each row.

3.- Cuando el trigger devuelve null, ¿significa que no hace nada sobre la sentencia?, entonces, ¿como se refleja esa operacion, que no devuelve nada en la tabla?, ¿significa eso que si devuelve null, se utiliza solo sacar mensajes por pantalla?
Rpta: ya te explicaba que si importaba lo que devuelva el return, si el trigger está definido para que se dispare before, pero si lo definiste con un after, no importa lo que le pongas al return ...
Y es importante retornar las variables new o old si lo que quieres es insertar datos en la BD; o si lo que quieres es validar algo antes de insertar y no cumple lo que definiste, entonces que mande un mensaje.

4.- El que devuelva new ¿significa que es entonces cuando nos va a permitir hacer modificaciones en la tabla?
Rpta: No necesariamente...
Tu puedes actualizar y no retornar new.
Recuerda que new es una variable de tipo la tabla con la que estás trabajando y que cuando la retornas, si no especificas un atributo en específico, es la tupla completa.
New normalmente se retorna si quieres insertar datos....
Saludos y espero que te sirvan las respuestas
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 14:57.