Re: AYUDA CON TRIGGER

From: Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>
To: FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: AYUDA CON TRIGGER
Date: 2017-10-05 22:45:17
Message-ID: CY4PR1801MB19271D8CF7BF6092A1E3571EF6700@CY4PR1801MB1927.namprd18.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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<mailto: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<mailto: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
[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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin De La Cruz 2017-10-05 22:59:32 RE: PostgreSQL 10 ya está disponible
Previous Message Anl. Nelson Pereda C. 2017-10-05 22:37:02 RE: PostgreSQL 10 ya está disponible