sobre savepoints

From: Linos <info(at)linos(dot)es>
To: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: sobre savepoints
Date: 2008-08-01 00:16:58
Message-ID: 489255FA.5090303@linos.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola, hace poco que migre a Postgresql y encuentro el tema de las transacciones que hacen
un rollback automatico (o como si lo hicieran porque al fin y al cabo el resto de cambios
devuelven un error) un poco lioso, yo realizo una serie de updates sobre una tabla por una
linea lenta, supongamos 20000 registros, quiero hacerlos todos o ninguno, pero si el
registro existe en la tabla remota detecto el error y como fallback lanzo un update, el
problema es que ahora con Postgresql mis inserts son tal que asi.

begin ----- savepoint ---- insert ---- releasesavepoint ---- savepoint ---- insert -----
releasesavepoint ---- savepoint --- insert(error) --- rollback to savepoint --- update ---
releasesavepoint --- 20000 registros mas ---- commit

Lo cual a traves de una linea lenta ralentiza considerablemente. Supongo que debe haber
alguna manera mejor de hacer esto que evidentemente yo no conozco, se puede desactivar
este modo para que la transaccion siga con un error hasta que yo haga un rollback
especifico? otra manera que habia pensado es hacer una funcion para los inserts (q
cambiara a update si existe el registro) pero las columnas cambian no solamente para cada
tabla si no a veces en cada insert, se generan con unos triggers automaticamente y no se
si se podria hacer o incluso si interesaria hacerlo. Me podrian echar un cable con esto?
gracias.

Un saludo,
Miguel Angel.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2008-08-01 00:50:09 Re: sobre savepoints
Previous Message Edwin Quijada 2008-07-31 20:55:51 RE: Conectar Postgress con .NET