Buenos dias

From: "Ing(dot)Informatico Osmany Rodriguez Duran" <orodriguez(at)uij(dot)edu(dot)cu>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Buenos dias
Date: 2017-12-11 14:23:06
Message-ID: 1967836338.85858.1513002186836.JavaMail.root@uij.edu.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Acudo una ves mas a su ayuda porque no logro eliminar el error de mi código y por mas q lo reviso
no encuentro la solución ya lo he hecho de diversas formas y me sigue dando el mismo error y lo he probado
en varias pc con varios postgres pero da el mismo error y sería una pena no poder hacer esa función ya q es bastante
importante en mi proyecto le explico un poco como funciona; 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 trigger:

CREATE TRIGGER insertar_rol
BEFORE INSERT
ON security.users
FOR EACH ROW
EXECUTE PROCEDURE security.rol_insert2();

esta es la funcion trigger:
-- Function: security.rol_insert()

-- DROP FUNCTION security.rol_insert();

CREATE OR REPLACE FUNCTION security.rol_insert2()
RETURNS trigger AS
$BODY$
DECLARE
arol varchar;
BEGIN
SELECT rol into arol FROM security.rol where id= NEW.rol_id;

CASE WHEN 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);

WHEN 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);

WHEN 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);

WHEN 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);

WHEN 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);

WHEN 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);

WHEN 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 CASE;

RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;

y este es el triste error:

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_insert2() 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_insert2() en la línea 44 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_insert2() en la línea 44 en sentencia SQL

este error se hace cíclico y se repite una y otra ves, aclarar q cuando lo hice por primera ves me inserto todo muy bien para ser exacto los primeros 6 roles los inserto bien
de ahí en adelante empezó a dar error he hecho casi de todo hasta donde me permite mi conocimiento pero nada no logro nada más que frustrarme, espero
logren entender un poco cual es la idea de lo deseo hacer y puedan ayudarme muchas gracias de antemano.....

--
Ing. en Informática Osmany Rodríguez Durán
Universidad Jesús Montané Oropesa Isla de la Juventud

Evento Universidad 2018. Conozca todos los detalles en http://universidad2018.uij.edu.cu

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2017-12-11 14:31:52 Re: Buenos dias
Previous Message Maximi89 2017-12-09 21:04:07 Re: Hi!