Re: DUDA ACERCA DE TRIGGER

From: Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>
To: FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: DUDA ACERCA DE TRIGGER
Date: 2016-10-03 19:02:51
Message-ID: BN6PR18MB12826FB9394CBFB04B142DCCF6C20@BN6PR18MB1282.namprd18.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

efectivamente estaba haciendo mal el trigger...

lo hice de la siguiente forma...y quisiera saber su punto de vista.

muchicimas gracias!!!

CREATE OR REPLACE FUNCTION educaciondistancia.insert_matricula_maestria()

RETURNS trigger AS

$BODY$

DECLARE

matricula record ;

BEGIN

PERFORM * FROM educaciondistancia.alumnos WHERE matriculamaestria = NEW.matriculamaestria;

IF FOUND THEN

raise exception 'La matricula que desea insertar ya existe';

END IF;

RETURN NEW;

END;

$BODY$

LANGUAGE plpgsql VOLATILE

COST 100;

ALTER FUNCTION educaciondistancia.insert_matricula_maestria()

OWNER TO postgres;

-- DROP TRIGGER tr_insert_matricula_maestria ON educaciondistancia.alumnos;

CREATE TRIGGER tr_insert_matricula_maestria

BEFORE INSERT

ON educaciondistancia.alumnos

FOR EACH ROW

EXECUTE PROCEDURE educaciondistancia.insert_matricula_maestria();

________________________________
De: Hellmuth Vargas <hivs77(at)gmail(dot)com>
Enviado: viernes, 30 de septiembre de 2016 11:47:44
Para: Emanuel Calvo
Cc: Maria Antonieta Ramirez; FORO POSTGRES
Asunto: Re: [pgsql-es-ayuda] DUDA ACERCA DE TRIGGER

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<mailto: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<mailto: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:

[X]

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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2016-10-03 19:22:26 Re: autovacuum excesivo PostgreSQL 9.5
Previous Message Alvaro Herrera 2016-10-03 17:26:27 Re: autovacuum excesivo PostgreSQL 9.5