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<mailto: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<mailto: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
[X]
www.syswarp.com<http://www.syswarp.com>
[X]



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