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 <
marami...@ulsaneza.edu.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 <hiv...@gmail.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.pe...@syswarp.com.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 <
>> marami...@ulsaneza.edu.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
>
>

Reply via email to