Re: AYUDA CON TRIGGER

From: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
To: Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>
Cc: FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: AYUDA CON TRIGGER
Date: 2017-10-06 11:18:34
Message-ID: CANm+PCBB7akVvocyKenGotSdgoMOT_RcRoXit8wsbPS8RMg8oA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

María Antonieta, para declararlo como FK en principio no necesitarían
cambiar código y el motor se encargaría de hacer el control que intentas
por trigger.
Para poder ayudarte con el trigger pasanos la declaración del mismo, no
solo la función.

El 5 de octubre de 2017, 19:45, Maria Antonieta Ramirez <
maramirez(at)ulsaneza(dot)edu(dot)mx> escribió:

> HOLA A TODOS!!!
>
>
> Hice lo siguiente,
>
>
> CREATE OR REPLACE FUNCTION educaciondistancia.valida_evaluaciones_alumno()
> RETURNS trigger AS
> $BODY$
> DECLARE
> id record ;
> BEGIN
>
> PERFORM * FROM educaciondistancia.evaluaciones_alumno_maestria WHERE
> evaluacionmaestria = OLD.id_evaluacion;
> IF FOUND THEN
> raise exception 'El esquema no se puede borrar ya que tiene
> evaluaciones del alumno';
> END IF;
> RETURN OLD;
> END;
> $BODY$
> LANGUAGE plpgsql VOLATILE
> COST 100;
> ALTER FUNCTION educaciondistancia.valida_evaluaciones_alumno()
> OWNER TO postgres;
>
>
> si hace mi validacion correcta , solo que si no encuentra
> evaluacionmaestria en la otra tabla, no borra el registro.
>
>
> es porque le estoy poniendo : RETURN OLD; ?
>
>
> En un inicio propuse agregar una foranea sin embargo desarrollo no quiere
> mover el codigo por el momento.
> ------------------------------
> *De:* Hellmuth Vargas <hivs77(at)gmail(dot)com>
> *Enviado:* jueves, 5 de octubre de 2017 14:25:45
> *Para:* Carlos Perez
> *Cc:* Maria Antonieta Ramirez; FORO POSTGRES
> *Asunto:* Re: AYUDA CON TRIGGER
>
> Hola Lista
>
> una pregunta porque no implementa un constraint Foreign Keys?
>
> https://www.postgresql.org/docs/9.6/static/ddl-constraints.html
>
>
>
> El 5 de octubre de 2017, 14:18, Carlos Perez<carlos(dot)perez(at)syswarp(dot)com(dot)ar>
> escribió:
>
>>
>>
>> Hola. Entiendo que por alguna razon no pones integridad referencial con
>> una constraint debe ser por alguna razon en particular.... sino te
>> recomendaria que uses eso directamente para no complicarte
>>
>>
>> Te pongo un ejemplo donde primero haces una funcion para el trigger donde
>> podrias eventualmente manejar el evento (en tu caso DELETE. ... Bueno, en
>> fin ,espero que te sirva.
>>
>>
>> CREATE OR REPLACE FUNCTION fn_movcli_saldo_cero()
>> RETURNS trigger AS
>> $BODY$
>> DECLARE vSQL_ERROR VARCHAR(300):='OK' ;
>> BEGIN
>> IF ( TG_OP = 'UPDATE' OR TG_OP = 'INSERT')THEN
>> IF (((NEW.saldo) < 0.01 AND (NEW.saldo) > 0) OR ((NEW.saldo) < 0
>> AND (NEW.saldo) > -0.01)) THEN
>> UPDATE clientesmovcli SET saldo = 0 WHERE nrointerno =
>> NEW.nrointerno;
>> END IF;
>> END IF;
>>
>> RETURN NEW;
>> -- EXCEPTION WHEN OTHERS THEN
>> -- RAISE EXCEPTION '%', SQLERROR;
>> -- RETURN OLD;
>> END;
>> $BODY$
>> LANGUAGE plpgsql VOLATILE
>> COST 100;
>> ALTER FUNCTION fn_movcli_saldo_cero()
>> OWNER TO postgres;
>>
>>
>>
>>
>>
>> CREATE TRIGGER tr_movcli_saldo_cero
>> AFTER INSERT OR UPDATE
>> ON clientesmovcli
>> FOR EACH ROW
>> EXECUTE PROCEDURE fn_movcli_saldo_cero(E'\\\\x5c7800');
>>
>>
>>
>> El 5 de octubre de 2017, 16:13, Maria Antonieta Ramirez <
>> maramirez(at)ulsaneza(dot)edu(dot)mx> escribió:
>>
>>> hola buenas tardes a todos!
>>>
>>>
>>>
>>> voy a hacer un trigger que valide si el id que quiere borrar el usuario
>>> no existe en otra tabla, si existe que no lo deje borrar y si no existe que
>>> si lo deje borrar.
>>>
>>>
>>> No se como haber la validacion de la busqueda en la otra tabla, no se
>>> mucho de triggers apenas estoy en eso. sis alguien puede orietarme se los
>>> agradecere mucho.
>>>
>>>
>>> gracias.
>>>
>>
>>
>>
>> --
>> Carlos Enrique Perez
>> Direccion Syswarp SRL
>>
>> www.syswarp.com
>>
>>
>
>
> --
> 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 Alvaro Herrera 2017-10-06 12:03:16 Re: AYUDA CON TRIGGER
Previous Message Edwin De La Cruz 2017-10-05 22:59:32 RE: PostgreSQL 10 ya está disponible