From: | Miguel Rodríguez Penabad <penabad(at)gmail(dot)com> |
---|---|
To: | el-PRiNCiPiTo <el-PRiNCiPiTo(at)terra(dot)es> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Crear función con un FOR |
Date: | 2008-06-16 14:07:40 |
Message-ID: | 95335e4e0806160707l611f1396y1e7feb6a35159658@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El día 16 de junio de 2008 13:58, el-PRiNCiPiTo
<el-PRiNCiPiTo(at)terra(dot)es> escribió:
> 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.
Esto lo puedes hacer (de hecho, lo estás intentando) con un trigger
for each row,
pero no es necesario recorrer filas.
El trigger se dispara por cada fila de TABLA1 que insertes, y en la función
puedes acceder al registro "NEW" que es la fila que estás insertando, o los
valores nuevos si la estás actualizando.
Por lo tanto:
> 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();
Esto está correcto.
La función sería algo como:
CREATE OR REPLACE FUNCTION f-comparar()
RETURNS trigger AS
$$
BEGIN
update tabla2
set idmodifica = 1 --no se como quieres modificar
where idCompara1=NEW.idCompara1
and idCompara2= NEW.idCompara2; --no se si la condición es así
return new;
END;
$$
LANGUAGE plpgsql VOLATILE;
Como ves, no hay que "recorrer filas" sino lanzar el update.
Si no verifica la condición, no actualizará ninguna fila. No sé si te sirve,
si no es así podrías indicar exactamente la modificación a realizar y la
condición que debe verificarse.
saludos
--
Miguel Rodríguez Penabad
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-06-16 14:43:13 | Re: nuevo release |
Previous Message | Raúl Andrés Duque Murillo | 2008-06-16 13:08:18 | Re: sobre funcion Password |