From: | Jaime Casanova <jaime(at)2ndquadrant(dot)com> |
---|---|
To: | Jose Maria Mencia Fernandez <jmencia(at)alimarket(dot)es> |
Cc: | POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Commit incremental |
Date: | 2013-08-30 11:45:14 |
Message-ID: | CAJKUy5j4LfujdGnTD9adL2ag+RrY10Fr40jnH106tW4ChwaRLg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2013/8/30 Jose Maria Mencia <jmencia(at)alimarket(dot)es>:
> Buenos días a todos desde Madrid,
> les planteo mi siguiente problema: he codificado una funcion pl/pgsql
> que realiza diversos cambios sobre un cliente determinado (en diversas
> tablas). Tengo que ejecutarla para miles de clientes pero quisiera
> gestionar la transacción por cada uno de ellos de modo que si el proceso
> falla en alguno, los cambios sobre los anteriores se hayan efectuado. Si
> los proceso todos en una única función la transacción es sólo una y
> pierdo la posibilidad del commit individual.
> ¿Cómo puedo resolverlo? Sólo se me ocurre llamar a esta función en un
> bucle para cada uno de los clientes desde un proceso externo a la BD
> escrito en cualquier lenguaje de programación con el que pueda conectar
> a postgres.
>
> ¿Alguna solución más apropiada que no implique código externo al motor
> de postgres?
>
Llama a esa función usando dblink. Al usar dblink, cada llamada ocurrirá dentro
de su propia transacción.
http://www.postgresql.org/docs/9.2/static/dblink.html
--
Jaime Casanova www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
Phone: +593 4 5107566 Cell: +593 987171157
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Jose Maria Mencia | 2013-08-30 12:08:54 | Re: Commit incremental |
Previous Message | Jose Maria Mencia | 2013-08-30 09:30:39 | Commit incremental |