Re: Hola

From: Gerardo Herzig <gerardo(dot)herzig(at)ayres(dot)io>
To: ElMalkriao <orodriguez(at)uij(dot)edu(dot)cu>
Cc: FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Hola
Date: 2017-12-07 19:44:27
Message-ID: CAM+tAYH_1yiP9ntT53EVPBNChpmeEPYoY88s6Hp3SJjkkkOjWA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 7 de diciembre de 2017, 14:01, ElMalkriao <orodriguez(at)uij(dot)edu(dot)cu>
escribió:

> buenas tardes, quisiera ver como me pueden ayudar con un error en una
> funcion ....
> tengo varias tablas que heredan de una con la misma estructura todas y
> tengo una funcion que trigger que se dispara cuando se va a insertar en
> la tabla madre 'user' donde pregunto que rol es el del user y en caso de
> ser uno de los roles que participan en el proceso de publicacion
> entonces se inserta en la tabla hija correspondiente al rol, de lo
> contrario se inserta en la tabla madre.
> este es el codigo de la function:
>
> CREATE OR REPLACE FUNCTION security.rol_insert()
> RETURNS trigger AS
> $BODY$
> DECLARE
> arol varchar;
> BEGIN
> SELECT rol into arol FROM security.rol where id= NEW.rol_id;
>
> IF arol like 'periodista' THEN
> INSERT INTO personal.periodista(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen);
> END IF;
> IF arol like 'corrector' THEN
> INSERT INTO personal.corrector(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen);
> END IF;
> IF arol like 'director' THEN
> INSERT INTO personal.director(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen);
> END IF;
> IF arol like 'disennador' THEN
> INSERT INTO personal.disennador(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen);
> END IF;
> IF arol like 'fotografo' THEN
> INSERT INTO personal.fotografo(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen);
> END IF;
> IF arol like 'jefe_informacion' THEN
> INSERT INTO personal.jefe_informacion(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen);
> END IF;
> IF arol like 'jefe_redaccion' THEN
> INSERT INTO personal.jefe_redaccion(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen);
>
> ELSE
> INSERT INTO security.users(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen);
> END IF;
> RETURN NEW;
> COMMIT;
>
> END;
> $BODY$
> LANGUAGE plpgsql VOLATILE
> COST 100;
> ALTER FUNCTION security.rol_insert()
> OWNER TO postgres;
>
>
> y este es el error que me da:
>
> ERROR: límite de profundidad de stack alcanzado
> HINT: Incremente el parámetro de configuración «max_stack_depth»
> (actualmente 2048kB), después de asegurarse que el límite de profundidad de
> stack de la plataforma es adecuado.
> CONTEXT: sentencia SQL: «SELECT rol FROM security.rol where
> id= NEW.rol_id»
> función PL/pgSQL security.rol_insert() en la línea 5 en sentencia SQL
> sentencia SQL: «INSERT INTO security.users(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen)»
> función PL/pgSQL security.rol_insert() en la línea 43 en sentencia SQL
> sentencia SQL: «INSERT INTO security.users(
> id, username, nombre, pass, ci, ultimav, rol_id, edad,
> sexo_id,correo, is_active, imagen)
> VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci,
> NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active,
> NEW.imagen)»
> función PL/pgSQL security.rol_insert() en la línea 43 en sentencia SQL
>
>
> espero puedan ayudarme...
> muchas gracias de antemano....
>
> --
> ”La vida no es solo esperar a que pase la tormenta, sino aprender a bailar
> en la lluvia.”
>
> Evento Universidad 2018. Conozca todos los detalles en
> http://universidad2018.uij.edu.cu
>
>
Lo que se me ocurre mas probable es que tengas alguna llamada recurrente /
circular, probablemente en un trigger o regla
en la tabla "users".

HTH
--
--
Gerardo Herzig
Principal Consultant at Ayres Data Team
root at Via Postgres Argentina

In response to

  • Hola at 2017-12-07 17:01:24 from ElMalkriao

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message jvenegasperu . 2017-12-07 20:45:49 Consulta SQL para Listar objetos de Postgres
Previous Message gilberto.castillo 2017-12-07 17:13:41 Re: [MASSMAIL]Hola