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
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 |