Hola Lista yo tengo una duda adicional, como quiere evitar duplicado de matriculamaestria en educaciondistancia.alumnos porque no colocar un UNIQUE sobre el campo y manejar la excepción?
El 30 de septiembre de 2016, 11:43, Emanuel Calvo<3man...@gmail.com> escribió: > > > Estas generando una llamada infinita al disparador, con eso no hay stack > que aguante. > > Si lo que estás queriendo hacer es manipular los argumentos NEW para > checkeo (como veo en tu función) u otras cosas, > no es necesario usar un INSERT, solo retorna NEW.* . Aún así, lo que estás > queriendo hacer es algo que > ya se implementa a través de una CONSTRAINT con UNIQUE, a menos que esté > omitiendo algo. > > > > On Thu, Sep 29, 2016 at 9:05 PM Maria Antonieta Ramirez < > marami...@ulsaneza.edu.mx> wrote: > >> Buen dia.. >> >> >> solicito su ayuda para una duda que tengo .. >> >> >> hice un trigger en el que antes de insertar un registro valide si existe >> una matricula para lo cual hice lo siguiente. >> >> >> >> >> CREATE OR REPLACE FUNCTION educaciondistancia.insert_matricula_maestria() >> >> RETURNS trigger AS >> >> $BODY$ >> >> DECLARE >> >> matricula record ; >> >> BEGIN >> >> >> SELECT * INTO matricula FROM educaciondistancia.alumnos WHERE >> matriculamaestria = NEW.matriculamaestria; >> >> IF NOT FOUND THEN >> >> INSERT INTO educaciondistancia.alumnos ( >> >> nombre , apellidopaterno , apellidomaterno, sexo , fechanac >> , lugarnac , nacionalidad , calle, numext, numint, colonia ,ciudad, >> municipio,estado,pais,cp, telefono, >> >> telcelular,ocupacion,estatus, email,nickname,foto, >> fecharegistro,matriculamaestria,aspirantemaestria,grupo, folioaspirante) >> >> VALUES ( >> >> NEW.nombre , NEW.apellidopaterno , NEW.apellidomaterno, >> NEW.sexo , NEW.fechanac , NEW.lugarnac , NEW.nacionalidad , NEW.calle, >> NEW.numext, NEW.numint, NEW.colonia , NEW.ciudad, NEW.municipio, >> NEW.estado, NEW.pais, NEW.cp, NEW.telefono, NEW. >> >> telcelular, NEW.ocupacion, NEW.estatus, NEW.email, >> NEW.nickname, NEW.foto, NEW.fecharegistro, NEW.matriculamaestria, >> NEW.aspirantemaestria, NEW.grupo, NEW.folioaspirante); >> >> >> END IF; >> >> RETURN NEW; >> >> END; >> >> $BODY$ >> >> LANGUAGE plpgsql VOLATILE >> >> COST 100; >> >> ALTER FUNCTION educaciondistancia.insert_matricula_maestria() >> >> OWNER TO postgres; >> >> >> >> >> CREATE TRIGGER tr_insert_matricula_maestria >> >> BEFORE INSERT >> >> ON educaciondistancia.alumnos >> >> FOR EACH ROW >> >> EXECUTE PROCEDURE educaciondistancia.insert_matricula_maestria(); >> >> >> >> >> >> >> >> ****** >> >> >> cuando hice pruebas por medio de pgadmin insertando mi registro , no me >> mando ningun problema. pero el dia de hoy lo probe de nuevo y en uno de los >> intentos de las pruebas me mando el siguiente mensaje: >> >> >> >> >> >> >> me podrian apoyar en saber a que se refiere. >> >> >> Por su atencion muchas gracias!!! >> >> >> >> >> >> -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate