El 11/12/17 a las 12:17, Anthony Sotolongo escribió: >> >>>> 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;
Bueno ahora que veo el tema de herencia en el mail original, esto es particionado, así que si, debería retornar NULL, con la única excepción de cuando no coincide con ninguno de los valores del CASE. Ahí debe retornar NEW, pero sin hacer el INSERT. Dicho eso, solamente poner RETURN NULL después de cada INSERT no soluciona el problema, ya que si no hay coincidencia en el CASE, el PL que Osmany envió genera una nueva inserción en la misma tabla, y ahí comienza la recursion -- Martín Marqués http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services