Error en disparador

From: miguel <mvillagomez(at)sayab(dot)com(dot)mx>
To: Lista Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Error en disparador
Date: 2008-08-21 12:52:57
Message-ID: 1219323177.11652.2.camel@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Qué tal tengo varias tablas y en ellas trato de hacer funcionar una
vista.
La vista actua de diferente manera cuando es inserción o actualización.
Con la inserción no hay problema alguno pero con la actualización no la
realiza de ninguna manera, no comprendo bien si el error es lógico o no
pero pido su consejo para que puedan apoyarme.
Aquí el disparador:

CREATE OR REPLACE FUNCTION trigger_departamento() RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'INSERT') THEN
IF (New.id_departamento IN(SELECT id_departamento FROM
departamento_error)) THEN
DELETE FROM departamento_error WHERE
id_departamento=New.id_departamento;
END IF;

IF (
(New.id_departamento IN(SELECT id_departamento FROM
departamento_excepciones))
OR
(New.id_departamento IN(SELECT id_departamento FROM
departamento))
OR
(New.id_departamento IN(SELECT id_departamento FROM
departamento_agregados))
)
THEN
RETURN NULL;
END IF;
ELSIF (TG_OP = 'UPDATE') THEN
IF (New.id_departamento IN(SELECT id_departamento FROM
departamento_agregados)) THEN
UPDATE departamentos_agregados SET
nombre_departamento=New.nombre_departamento WHERE
id_departamento=New.nombre_departamento;
RETURN NULL;
END IF;
END IF;
RETURN NEW;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER trigger_departamento BEFORE INSERT OR UPDATE ON
departamento FOR EACH ROW EXECUTE PROCEDURE trigger_departamento();

Gracias de antemano por la ayuda.

--
Miguel Ángel Villagómez Díaz
Sayab Technologies S.C.
Tel. 3616-9100

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Sebastián Villalba 2008-08-21 13:04:10 RE: Select en una BD e insert en otra BD
Previous Message Laura reiva 2008-08-21 12:11:06 RE: Select en una BD e insert en otra BD