Re: DUDA ACERCA DE TRIGGER

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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