Re: Lenguaje de programacion PLPHP

Lists: pgsql-es-ayuda
From: JP <mozstyle2002(at)gmx(dot)net>
To: Pgsql-Es-Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Triggers recursivos
Date: 2005-03-21 06:56:30
Message-ID: 423E701E.6020801@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola,

Me estoy cambiando de MS-SQL a PostgreSql y tengo un problemita en un
trigger:

Tengo un trigger TRG1 para una tabla TBL1 que se activa después
(AFTER) de un Insert o un Update a nivel For Each ROW.

La cosa es que dentro del Trigger TRG1, ejecuto un procedimiento
almacenado (SP1) el que a su vez puede o no, realizar un UPDATE a un
campo de la misma tabla TBL1. Esto al parecer genera que una vez
completado el UPDATE dentro de este SP1, se gatille nuevamente el
trigger TRG1 sin haber concluido el SP1.

Esto me trae problemas ya que el trigger parece entrar en un Loop
"finito" (que por alguna razón no es infinito). Esto hace que la
ejecución completa del trigger se tarde varios segundos en concluir. He
probado quitando el UPDATE del SP1 y la ejecución del trigger (SP1
incluido) es instantánea. En ambos casos (con o sin UPDATE dentro del
SP1) el resultado es el que se espera para la TBL1.

¿Es posible evitar que se gatille el TRG1 para la tabla TBL1 cuando
realizo el Update a la TBL1 dentro de mi SP1?
De ser así, (necesariamente), ¿es posible indicar qué triggers se
ven afectados ante el "Nested triggers"?, o, ¿ es para todos los
triggers de una BBDD?
¿Es posible definir el nivel de recursividad?

Recuerdo que en MS-SQL existe un comando que permite evitar los triggers
recursivos (algo así como set RECURSIVE_TRIGGERS off).

Desde ya gracias por la ayuda
Salu2

--
,''`. Juan Pablo GO
: :' : Sólo otro Debianita
`. `' DEBIAN GNU/LINUX
`-


From: "Hugo Gamarra" <hgamarra(at)hacienda(dot)gov(dot)py>
To: "'JP'" <mozstyle2002(at)gmx(dot)net>
Cc: "'PostgreSQL'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Triggers recursivos
Date: 2005-03-21 15:16:43
Message-ID: 002101c52e29$005d79b0$ef06000a@SSET.GOV.PY
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola,
La verdad no lo he probado en postgresql, pero en oracle se puede
asignar valor a un campo en un trigger, solo en el before (si no me
equivoco), seria algo así
:new.campo := <valor>;

De esta forma te ahorras el update

Saludos cordiales,
Hugo Gamarra.

> -----Mensaje original-----
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:pgsql-es-ayuda-
> owner(at)postgresql(dot)org] En nombre de JP
> Enviado el: Lunes, 21 de Marzo de 2005 02:57
> Para: Pgsql-Es-Ayuda
> Asunto: [pgsql-es-ayuda] Triggers recursivos
>
> Hola,
>
> Me estoy cambiando de MS-SQL a PostgreSql y tengo un problemita en un
> trigger:
>
> Tengo un trigger TRG1 para una tabla TBL1 que se activa después
> (AFTER) de un Insert o un Update a nivel For Each ROW.
>
> La cosa es que dentro del Trigger TRG1, ejecuto un procedimiento
> almacenado (SP1) el que a su vez puede o no, realizar un UPDATE a un
> campo de la misma tabla TBL1. Esto al parecer genera que una vez
> completado el UPDATE dentro de este SP1, se gatille nuevamente el
> trigger TRG1 sin haber concluido el SP1.
>
> Esto me trae problemas ya que el trigger parece entrar en un Loop
> "finito" (que por alguna razón no es infinito). Esto hace que la
> ejecución completa del trigger se tarde varios segundos en concluir.
He
> probado quitando el UPDATE del SP1 y la ejecución del trigger (SP1
> incluido) es instantánea. En ambos casos (con o sin UPDATE dentro del
> SP1) el resultado es el que se espera para la TBL1.
>
> ¿Es posible evitar que se gatille el TRG1 para la tabla TBL1
cuando
> realizo el Update a la TBL1 dentro de mi SP1?
> De ser así, (necesariamente), ¿es posible indicar qué triggers se
> ven afectados ante el "Nested triggers"?, o, ¿ es para todos los
> triggers de una BBDD?
> ¿Es posible definir el nivel de recursividad?
>
> Recuerdo que en MS-SQL existe un comando que permite evitar los
triggers
> recursivos (algo así como set RECURSIVE_TRIGGERS off).
>
> Desde ya gracias por la ayuda
> Salu2
>
> --
> ,''`. Juan Pablo GO
> : :' : Sólo otro Debianita
> `. `' DEBIAN GNU/LINUX
> `-
>
>
> ---------------------------(fin del
mensaje)---------------------------
> TIP 1: para suscribirte y desuscribirte, escribe a
> majordomo(at)postgresql(dot)org


From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Hugo Gamarra <hgamarra(at)hacienda(dot)gov(dot)py>
Cc: "'JP'" <mozstyle2002(at)gmx(dot)net>, "'PostgreSQL'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Triggers recursivos
Date: 2005-03-21 16:53:01
Message-ID: 20050321165301.GA28137@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On Mon, Mar 21, 2005 at 11:16:43AM -0400, Hugo Gamarra wrote:

> La verdad no lo he probado en postgresql, pero en oracle se puede
> asignar valor a un campo en un trigger, solo en el before (si no me
> equivoco), seria algo así
> :new.campo := <valor>;
>
> De esta forma te ahorras el update

En Postgres tambien se puede hacer eso (solo en triggers FOR EACH ROW).
Claro que eso sirve solo si lo que quieres modificar con el UPDATE en el
trigger es la misma tupla que fue modificada para disparar el trigger.

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"Estoy de acuerdo contigo en que la verdad absoluta no existe...
El problema es que la mentira sí existe y tu estás mintiendo" (G. Lama)


From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Juan Pablo GO <mozstyle2002(at)gmx(dot)net>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Triggers recursivos
Date: 2005-03-21 18:55:32
Message-ID: 20050321185532.GA27341@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On Mon, Mar 21, 2005 at 02:25:50PM -0400, Juan Pablo GO wrote:
> Gracias Alvaro,
>
> Si, es la misma tupla...
>
> ¿Sabes de algun link dónde consultar cómo lo implementa PostgreSql?

El manual de plpgsql ... pero basta con simplemente hacer asignaciones a
la tupla NEW, como

NEW.campo = valor | variable;

http://www.postgresql.org/docs/8.0/static/plpgsql.html
(particularmente la seccion de triggers)

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"La naturaleza, tan frágil, tan expuesta a la muerte... y tan viva"


From: "Luis Guevara" <luisguevara(at)expressmail(dot)net>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Lenguaje de programacion PLPHP
Date: 2005-03-23 19:21:24
Message-ID: 012301c52fdd$898e2800$c564a8c0@pc197
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola Amigos:

Tienen algun opinion sobre este lenguaje para procedimientos almacenados ??
Lo recomiendan ???
Existe informacion en español ??

Muchas Gracias

atte.
Luis Guevara

----- Original Message -----
From: "Alvaro Herrera" <alvherre(at)dcc(dot)uchile(dot)cl>
To: "Juan Pablo GO" <mozstyle2002(at)gmx(dot)net>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Monday, March 21, 2005 1:55 PM
Subject: Re: [pgsql-es-ayuda] Triggers recursivos

> On Mon, Mar 21, 2005 at 02:25:50PM -0400, Juan Pablo GO wrote:
> > Gracias Alvaro,
> >
> > Si, es la misma tupla...
> >
> > ¿Sabes de algun link dónde consultar cómo lo implementa PostgreSql?
>
> El manual de plpgsql ... pero basta con simplemente hacer asignaciones a
> la tupla NEW, como
>
> NEW.campo = valor | variable;
>
> http://www.postgresql.org/docs/8.0/static/plpgsql.html
> (particularmente la seccion de triggers)
>
> --
> Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
> "La naturaleza, tan frágil, tan expuesta a la muerte... y tan viva"
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 1: para suscribirte y desuscribirte, escribe a
majordomo(at)postgresql(dot)org
>


From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Luis Guevara <luisguevara(at)expressmail(dot)net>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Lenguaje de programacion PLPHP
Date: 2005-03-24 14:09:07
Message-ID: 20050324140907.GJ20726@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On Wed, Mar 23, 2005 at 02:21:24PM -0500, Luis Guevara wrote:

Hola,

> Tienen algun opinion sobre este lenguaje para procedimientos almacenados ??
> Lo recomiendan ???

Si sabes usar PHP, y tus aplicaciones estan en PHP entonces
probablemente te convenga usar PL/PHP ... yo no lo usaria porque no me
gusta PHP, pero en principio no veo por que no.

> Existe informacion en español ??

Lo dudo mucho.

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"The only difference is that Saddam would kill you on private, where the
Americans will kill you in public" (Mohammad Saleh, 39, a building contractor)


From: Mario Gonzalez <mario(at)cfrd(dot)cl>
To: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Lenguaje de programacion PLPHP
Date: 2005-03-24 14:18:21
Message-ID: 1111673901.7736.41.camel@mario.cfrd.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El jue, 24-03-2005 a las 10:09 -0400, Alvaro Herrera escribió:
> On Wed, Mar 23, 2005 at 02:21:24PM -0500, Luis Guevara wrote:
>
> Hola,
>
> > Tienen algun opinion sobre este lenguaje para procedimientos almacenados ??
> > Lo recomiendan ???
>
> Si sabes usar PHP, y tus aplicaciones estan en PHP entonces
> probablemente te convenga usar PL/PHP ... yo no lo usaria porque no me
> gusta PHP, pero en principio no veo por que no.
Hola a todos, en varias ocasiones he leido aca que PHP no es bueno
para trabajar con postgreSQL, he buscado en internet razones del por que
no usarlo. ¿Por que entonces NO se deberia usar?
>
> > Existe informacion en español ??
>
> Lo dudo mucho.
>
--
Debian GNU/Linux
Linux User: 281238
Por Favor no Mandar documentos WORD!!! ;\
http://www.intergate.com/~emarch/no-word.html


From: Martín Marqués <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: mario(at)cfrd(dot)cl
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Lenguaje de programacion PLPHP
Date: 2005-03-26 12:16:47
Message-ID: 200503260916.48227.martin@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El Jue 24 Mar 2005 11:18, Mario Gonzalez escribió:
> Hola a todos, en varias ocasiones he leido aca que PHP no es bueno
> para trabajar con postgreSQL, he buscado en internet razones del por que
> no usarlo. ¿Por que entonces NO se deberia usar?

Porque no sería bueno, si yo lo uso! ;-)

Creo que la cuestión es mas de interés por otro lenguaje. Hay gente acá que
prefiere programar en Python, C o Java. Pero no por eso queda PHP relegado a
un lenguaje que solo puede ser usado con bases de datos "no
relacionales". :-)

--
09:14:18 up 7 days, 13:45, 1 user, load average: 0.46, 0.39, 0.36
-----------------------------------------------------------------
Martín Marqués | select 'mmarques' || '@' || 'unl.edu.ar'
Centro de Telematica | DBA, Programador, Administrador
Universidad Nacional
del Litoral
-----------------------------------------------------------------


From: Ernesto Quiñones <ernesto(at)eqsoft(dot)net>
To: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Lenguaje de programacion PLPHP
Date: 2005-03-26 16:51:06
Message-ID: 1111855867.9600.4.camel@prodigy
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

PLPHP esta buenazo, yo comence a usarlo para ambiente de producción pero
la jarana esta aun muy inestable, las funciones se descompilan solas,
así que mejor sugiero esperar un tiempo mas por lo menos antes de
intentar usarlo en ambiente de producción

El sáb, 26-03-2005 a las 09:16 -0300, Martín Marqués escribió:
> El Jue 24 Mar 2005 11:18, Mario Gonzalez escribió:
> > Hola a todos, en varias ocasiones he leido aca que PHP no es bueno
> > para trabajar con postgreSQL, he buscado en internet razones del por que
> > no usarlo. ¿Por que entonces NO se deberia usar?
>
> Porque no sería bueno, si yo lo uso! ;-)
>
> Creo que la cuestión es mas de interés por otro lenguaje. Hay gente acá que
> prefiere programar en Python, C o Java. Pero no por eso queda PHP relegado a
> un lenguaje que solo puede ser usado con bases de datos "no
> relacionales". :-)
>
>