From: | Hellmuth Vargas <hivs77(at)gmail(dot)com> |
---|---|
To: | Emanuel Calvo <3manuek(at)gmail(dot)com> |
Cc: | Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>, FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: DUDA ACERCA DE TRIGGER |
Date: | 2016-09-30 16:47:44 |
Message-ID: | CAN3Qy4pZ0hQ9joKw+teuSdvqsaEzS4qZnfsHFS2bUbfeGd-XzA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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<3manuek(at)gmail(dot)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 <
> maramirez(at)ulsaneza(dot)edu(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Lazaro Garcia | 2016-09-30 17:03:26 | Herramientas para testing de base de datos. |
Previous Message | Emanuel Calvo | 2016-09-30 16:43:12 | Re: DUDA ACERCA DE TRIGGER |