Re: problema con trigger

Lists: pgsql-es-ayuda
From: "Esneiker Enriquez Cabrera" <eenriquez(at)cav(dot)desoft(dot)cu>
To: "'POSTGRES'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: problema con trigger
Date: 2015-03-10 19:16:43
Message-ID: 006001d05b66$be88e9e0$3b9abda0$@desoft.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola amigos.

Estoy tratando de hacer un trigger que en la inserción o la actualización de
una tabla me ejecute una función pero al hacer insert o update me da el
error:

límite de profundidad de stack alcanzado

ahora no me doy cuenta de qué es lo que estoy haciendo mal, espero que
alguien me pueda decir.

El código es el siguiente:

CREATE OR REPLACE FUNCTION actualizar_estado()

RETURNS trigger AS

$BODY$

declare cadena character varying(500);

BEGIN

cadena = '';

select * into cadena from concatenar_nombre_estado(NEW.id);

update nmestado set concatenado = cadena where id=NEW.id;

RETURN NEW;

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION actualizar_estado() OWNER TO postgres;

CREATE TRIGGER ti_nmestado

AFTER INSERT or UPDATE

ON nmestado

FOR EACH ROW

EXECUTE PROCEDURE actualizar_estado();

Saludos,

Ing. Esneiker Enriquez Cabrera
Esp. B en Ciencias Informáticas

Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila.
Cuba.
Telf.: 53 33 22 8971, email.: <mailto:eenriquez(at)cav(dot)desoft(dot)cu>
eenriquez(at)cav(dot)desoft(dot)cu


From: Anthony Sotolongo León <asotolongo(at)gmail(dot)com>
To: Esneiker Enriquez Cabrera <eenriquez(at)cav(dot)desoft(dot)cu>, 'POSTGRES' <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: problema con trigger
Date: 2015-03-10 20:12:36
Message-ID: 54FF5034.6050007@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

creo que estas actualizando la tabla que tiene el triggers dentro de la
funcion , mira esta URL
http://www.depesz.com/2012/02/01/waiting-for-9-2-trigger-depth/

explican sobre el tema

saludos

El 10-03-2015 a las 16:16, Esneiker Enriquez Cabrera escribió:
>
> Hola amigos.
>
> Estoy tratando de hacer un trigger que en la inserción o la
> actualización de una tabla me ejecute una función pero al hacer insert
> o update me da el error:
>
> límite de profundidad de stack alcanzado
>
> ahora no me doy cuenta de qué es lo que estoy haciendo mal, espero que
> alguien me pueda decir.
>
> El código es el siguiente:
>
> CREATE OR REPLACE FUNCTION actualizar_estado()
>
> RETURNS trigger AS
>
> $BODY$
>
> declare cadena character varying(500);
>
> BEGIN
>
> cadena = '';
>
> select * into cadena from concatenar_nombre_estado(NEW.id);
>
> update nmestado set concatenado = cadena where id=NEW.id;
>
> RETURN NEW;
>
> END;
>
> $BODY$
>
> LANGUAGE 'plpgsql' VOLATILE
>
> COST 100;
>
> ALTER FUNCTION actualizar_estado() OWNER TO postgres;
>
> CREATE TRIGGER ti_nmestado
>
> AFTER INSERT or UPDATE
>
> ON nmestado
>
> FOR EACH ROW
>
> EXECUTE PROCEDURE actualizar_estado();
>
> Saludos,
>
> */Ing. Esneiker Enriquez Cabrera/**
> **Esp. B en Ciencias Informáticas*
>
> Desoft en Ciego de Ávila. Joaquín de Agueroesq. Calle 2. Ciego de
> Ávila. Cuba.
> *Telf.:* 53 33 22 8971, *email.:* eenriquez(at)cav(dot)desoft(dot)cu
> <mailto:eenriquez(at)cav(dot)desoft(dot)cu>
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas de virus 11288 (20150308) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com


From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Esneiker Enriquez Cabrera <eenriquez(at)cav(dot)desoft(dot)cu>
Cc: 'POSTGRES' <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: problema con trigger
Date: 2015-03-10 20:17:27
Message-ID: 20150310201727.GG3291@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Esneiker Enriquez Cabrera escribió:
> Hola amigos.
>
> Estoy tratando de hacer un trigger que en la inserción o la actualización de
> una tabla me ejecute una función pero al hacer insert o update me da el
> error:
>
> límite de profundidad de stack alcanzado

Oh, FFS.

Usa un trigger BEFORE, y modifica en el mismo trigger el campo en el
registro NEW, en lugar de hacer un update nuevo.

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


From: "Esneiker Enriquez Cabrera" <eenriquez(at)cav(dot)desoft(dot)cu>
To: "'Alvaro Herrera'" <alvherre(at)2ndquadrant(dot)com>
Cc: "'POSTGRES'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: problema con trigger
Date: 2015-03-11 13:38:30
Message-ID: 001801d05c00$aa96a860$ffc3f920$@desoft.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Muchas gracias a todos por su ayuda.

Saludos,
Ing. Esneiker Enriquez Cabrera
      Esp. B en Ciencias Informáticas
Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila.
Cuba.
Telf.: 53 33 22 8971, email.: eenriquez(at)cav(dot)desoft(dot)cu

-----Mensaje original-----
De: pgsql-es-ayuda-owner(at)postgresql(dot)org
[mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Alvaro Herrera
Enviado el: martes, 10 de marzo de 2015 16:17
Para: Esneiker Enriquez Cabrera
CC: 'POSTGRES'
Asunto: Re: [pgsql-es-ayuda] problema con trigger

Esneiker Enriquez Cabrera escribió:
> Hola amigos.
>
> Estoy tratando de hacer un trigger que en la inserción o la actualización
de
> una tabla me ejecute una función pero al hacer insert o update me da el
> error:
>
> límite de profundidad de stack alcanzado

Oh, FFS.

Usa un trigger BEFORE, y modifica en el mismo trigger el campo en el
registro NEW, en lugar de hacer un update nuevo.

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 11288 (20150308) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 11288 (20150308) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda