Re: Como usar varios update en una instruccion, es posible?

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Jaime Quiroga <jay962(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como usar varios update en una instruccion, es posible?
Date: 2008-01-11 21:06:01
Message-ID: 20080111210601.GC8260@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jaime Quiroga escribió:

> Existe la manera de concatenar varios updates en un solo string para que el servidor se encargue de ellos, algo asi como esto

> Update tablita1 set hola='1' where orden= '23' and cod= '21'; update tablita1 set hola='12' where orden='23' and cod='43', update tablita1 set hola='34' where orden='23' and cod='90'

No. Si pudieras expresar el update como una consulta, funcionaria lo
que quieres. Por ej.

begin
create temp table updates (hola int, orden int, cod int) on commit drop;
insert into updates values (1, 23, 21);
insert into updates values (12, 23, 43);
insert into updates values (34, 23, 90);
update tablita1 from updates set hola = updates.hola
where orden = updates.orden and cod = updates.cod;
commit;

El problema es que si uno de esos updates falla, entonces todo va a
fallar y vas a tener que empezar de nuevo (y peor aun: vas a tener que
examinar la tabla y verificar cual falló, por que, y como corregirlo).

El siguiente problema es que no tienes como saber que los tres updates
actualizaron exactamente un registro cada uno (o los que tu quieras), en
cambio es facil hacerlo cuando haces un update por cada paquete.

Ahora lo que no me queda claro es por que fallan ...

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Quiroga 2008-01-11 21:23:17 RE: Como usar varios update en una instruccion, es posible?
Previous Message Jaime Quiroga 2008-01-11 20:50:29 Como usar varios update en una instruccion, es posible?