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

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

Espero te ayude.... y buenos días ;)

-- 
Martín Marqués                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

Reply via email to