Hola
On 11/12/17 12:04, Martin Marques wrote:
Saludos Osmany y Anthony,
El 11/12/17 a las 11:52, Anthony Sotolongo escribió:
HOla Osmany, has intentado colocar el return null; luego de cada insert
(para salir de la función) y creo que eso puede evitar que se inserte
recursivamente.
pues al final veo un return new;
Ese no es el problema, AFAICS
creo que estamos comentando posible soluciones similares!!!
este es el trigger:
CREATE TRIGGER insertar_rol
BEFORE INSERT
ON security.users
FOR EACH ROW
EXECUTE PROCEDURE security.rol_insert2();
[snip]
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;
Fijate que en el ELSE del CASE estas volviendo a insertar la fila. Aquí
es donde se genera la recursion.
Acá en lugar de insertar deberías simplemente retornar NEW, y en los
otros cases retornar NULL (a menos que quieras que se inserte la fila en
security.users y en la tabla correspondiente al caso en el que entra en
el CASE.
un return null; luego de cada insert, de este modo creo que no llegara
nunca al return new del final,
es similar a colocar quitar el insert del else y retornar el new;
Espero te ayude.... y buenos días ;)
saludos