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

Responder a