Hola

From: ElMalkriao <orodriguez(at)uij(dot)edu(dot)cu>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Hola
Date: 2017-12-07 17:01:24
Message-ID: 585966038.48529.1512666084166.JavaMail.root@uij.edu.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message gilberto.castillo 2017-12-07 17:13:41 Re: [MASSMAIL]Hola
Previous Message Francisco Olarte 2017-12-07 10:18:10 Re: consulta.