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 <[email protected]>
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<[email protected]<mailto:[email protected]>> 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
<[email protected]<mailto:[email protected]>> 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