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