From: | hernan zapata <hazapata(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Estancado con un trigger en PostgreSQL |
Date: | 2010-03-02 17:43:02 |
Message-ID: | c852fe6f1003020943h1a63d450qea16074c994a3c7c@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Cordial saludo comunidad
Les escribo porque no he podido encontrar quien me pueda ayudar con este
trigger, y yo estoy cansando de ensayar de una y otra forma, y mirando la
documentacion de postgres.
Si es posible me gustaria que miraran el codigo que les pongo y me digan
como hago para hacer lo que necesito hacer. El codigo esta abajo.
Basicamente lo que necesito hacer es que cuando el campo
"fk_codigo_familiar_que_puede_ser_beneficiario" de la tabala "beneficiario",
se le inserte un dato (este campo es una clave foranea), este dato tambien
se actualice en otra tabla que se llama "parentesco_familiar" y el campo que
se actualizaria en esta tabla seria
"fk_codigo_familiar_que_es_beneficiario_relacion_lado1" ó
"fk_codigo_familiar_que_es_beneficiario_relacion_lado2", dependiendo si se
cumple la condición en el UPDATE. EL problema es que esa actualización nunca
se hace, y de verdad he hecho mucho intentos haciendolo de diferentes
maneras, este seria un codigo de tantos que tengos, pero este es el que
muestra de manera mas simple lo que deseo hacer.
Agradecería mucho su colaboración porque la verdad estoy estancado con
esto....
CREATE FUNCTION actualizacion_estado_familiar_en_parentesco() RETURNS
trigger AS $beneficiario$
BEGIN
IF (TG_OP = 'UPDATE')THEN
IF((OLD.fk_codigo_familiar_que_puede_ser_beneficiario)<>
(NEW.fk_codigo_familiar_que_puede_ser_beneficiario))THEN
RAISE EXCEPTION 'Un Familiar puede pasar a ser un Beneficiario, pero
un Beneficiario no puede pasar a ser un Familiar';
RETURN NULL;
END IF;
RETURN NEW;
ELSIF(TG_OP = 'INSERT') THEN
UPDATE parentesco_familiar SET
fk_codigo_beneficiario_relacion_lado1 =
NEW.codigo_beneficiario
WHERE fk_codigo_familiar_que_es_beneficiario_relacion_lado1 =
NEW.fk_codigo_familiar_que_puede_ser_beneficiario;
UPDATE parentesco_familiar SET
fk_codigo_beneficiario_relacion_lado2 =
NEW.codigo_beneficiario
WHERE fk_codigo_familiar_que_es_beneficiario_relacion_lado2 =
NEW.fk_codigo_familiar_que_puede_ser_beneficiario;
END IF;
RETURN NEW;
END;
$beneficiario$ LANGUAGE plpgsql;
CREATE TRIGGER actualizacion_estado_familiar_en_parentesco AFTER INSERT OR
UPDATE ON beneficiario
FOR EACH ROW EXECUTE PROCEDURE
actualizacion_estado_familiar_en_parentesco();
--
Hernan Zapata Alzate
Estudiante de Ingeniería de Sistemas
Universidad Nacional de Medellín
From | Date | Subject | |
---|---|---|---|
Next Message | Fernando Hevia | 2010-03-02 18:01:21 | RE: Estancado con un trigger en PostgreSQL |
Previous Message | Fernando Hevia | 2010-03-02 17:33:32 | RE: Ayudo con configuracion para rendimiento de PostgreSQL 8.1.11 |