From: | Martin Marques <martin(dot)marques(at)2ndquadrant(dot)com> |
---|---|
To: | Anthony Sotolongo <asotolongo(at)gmail(dot)com>, "Ing(dot)Informatico Osmany Rodriguez Duran" <orodriguez(at)uij(dot)edu(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Buenos dias |
Date: | 2017-12-11 15:04:25 |
Message-ID: | 20dbe830-b540-0674-be23-2348a12a5adf@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Anthony Sotolongo | 2017-12-11 15:17:53 | Re: Buenos dias |
Previous Message | Anthony Sotolongo | 2017-12-11 14:52:00 | Re: Buenos dias |