Crear función con un FOR

From: el-PRiNCiPiTo <el-PRiNCiPiTo(at)terra(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Crear función con un FOR
Date: 2008-06-16 11:58:08
Message-ID: 48565550.3040805@terra.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos.
Voy a explicar lo que quiero hacer y la idea que tengo, a ver si alguien
me puede decir cual es el mejor camino para solucionarlo..

Quiero que al insertar o actualizar una fila de una tabla busque en otra
tabla si hay alguna fila igual y de ser así que modifique dicha fila.

No quiero trabajar con todos los campos de las 2 tablas ni con todas las
filas así que tengo un select que me saca las filas con las que quiero
trabajar.
Entonces mi idea es crear un trigger que al actualizar o insertar en la
tabla1 se ejecute y haga el select que saca las filas de la tabla2 en
las que quiero buscar las coincidencias. Pero mi problema es que una vez
hago ese select me salen varias filas en el resultado y no se como
recorrerlas para buscar las coincidencias. Me gustaría usar plpgsql como
lenguaje en la función porque es con el que mas empiezo a familiarizarme.

TABLA1: idTabla1 idCompara1 idCompara2
TABLA2: idTabla2 idCompara1 idCompara2 idModifica

CREATE TRIGGER t-comparar
BEFORE INSERT OR UPDATE
ON TABLA1
FOR EACH ROW
EXECUTE PROCEDURE f-comparar();

CREATE OR REPLACE FUNCTION f-comparar()
RETURNS "trigger" AS
$BODY$BEGIN

//
Entonces aquí tendría un select que me saca las filas en las que quiero
buscar las coincidencias, por ejemplo este:
Select idTabla2
from TABLA2
where idCompara1 <> 8
Pero si me saca varias filas como hago para recorrerlas? con un for?
O esta no es la forma de hacer lo que yo quiero?
//
return new;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION color_referencia() OWNER TO postgres;

Os agradezco cualquier orientación para seguir buscando información
sobre el tema.

Muchas gracias a todos

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2008-06-16 12:25:13 Re: Consulta con Condicionales
Previous Message leonel 2008-06-16 11:37:57 Re: nuevo release