Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

sobre savepoints


  • From: Linos <info(at)linos(dot)es>
  • To: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
  • Subject: sobre savepoints
  • Date: Fri, 01 Aug 2008 02:16:58 +0200
  • Message-id: <489255FA(dot)5090303(at)linos(dot)es>

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.



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group