[Pgsql-ayuda] return new, return old, trigger

Alfonso Andaur L. postgresql@creasoluciones.cl
Tue, 12 Aug 2003 12:35:01 -0400


> algun consejo sencillo para ayudarme a establecer
> si mi retorno en una
>
>      function-trigger sea new o old   ???
>
> entiendo (creo... segun manual)
> NEW: variable holding (..???) para operacion INSERT/UPDATE
>      en la nueva tupla ...  ????
> OLD: variable holding (..???) para operacion UPDATE/DELETE
>      en la ultima tupla (vieja) ..??

No estoy seguro de lo que est=E1s preguntando .... pero te puedo decir al=
gunas
cosas:

* Existen tres posibles acciones para un trigger: Insert, Update y Delete=
=2E

* Cuando usas un trigger con la opci=F3n Before, entonces old posee los d=
atos
que se encuentran en la tabla y new los datos que se desean incluir.

* Cuando usas un trigger con la opci=F3n After, entonces old posee los da=
tos
que tenia la tabla antes de la acci=F3n y new los datos que tiene ahora.

En tu c=F3digo dice:

>
> CREATE TRIGGER tub_personas BEFORE UPDATE ON personas
>     FOR EACH ROW EXECUTE PROCEDURE tub_personas();
>

por lo tanto, old contiene los valores actualmente en la tabla y new
contiene los valores que reemplazar=E1n a los existentes si se cumplen to=
das
las validaciones corrspondientes.

Ahora, dependiendo de la l=F3gica que pongas en el trigger (en la funcion=
 para
PostgreSQL) tu podr=EDas modificar los valores en new y retornar new o po=
dr=EDas
simplemente retornar old si deseas volver atr=E1s la modificaci=F3n.

Espero que estos comentarios te sirvan.



Alfonso Andaur L.
Crea Soluciones de Ingenier=EDa Ltda.
"Creando soluciones de confianza"