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