From: | "Haroldo Stenger" <haroldo(dot)stenger(at)gmail(dot)com> |
---|---|
To: | "Alexander Giraldo" <alexgiraldo(at)ipsoft-sa(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Ayuda con el valor de una secuencia al abortar una transaccion. |
Date: | 2007-01-05 02:53:53 |
Message-ID: | d33fde4e0701041853t493eba8cx6d80b426cc7f0bdf@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
hola, para mí la solución para esto es tener dos juegos de tablas, el
de "carga" y el "bueno", en el de "carga" no me importa que haya
huecos, y en el bueno disminuyo al mínimo las posibilidades de
cancelar, al menos por parte del usuario. Luego de hacer commit de la
"carga", procedo a hacer insert into .. select ... (ver la
sintaxis) y otro commit sobre las tablas buenas.
h
On 1/5/07, Alexander Giraldo <alexgiraldo(at)ipsoft-sa(dot)com> wrote:
> Hola, tengo una tabla para el registro de un documento y su respectiva
> tabla de detalle,
> Cuando voy a crear un documento inicio una transaccion genero el numero
> del documento de
> una secuencia con nextval, inserto en la tabla del documento, y en la
> tabla de detalle los registros utilizando el numero de la secuencia para
> relacionar las tablas y termino la transaccion, hasta aqui todo va bien.
> Pero cuando por algun motivo la transaccion tiene que ser cancelada, se
> me pierde el valor de la secuencia que inserte quedando vacios(huecos)
> en la numeracion del documento.
>
>
> En la documentacion aparece claramente esta advertencia:
>
> "*Important: *To avoid blocking of concurrent transactions that obtain
> numbers from the same sequence, a |nextval| operation is never rolled
> back; that is, once a value has been fetched it is considered used, even
> if the transaction that did the |nextval| later aborts. This means that
> aborted transactions may leave unused "holes" in the sequence of
> assigned values. |setval| operations are never rolled back, either."
>
> MI PREGUNTA ES: Como puedo hacer para que no me queden estos huecos en
> la numeracion, tratando en lo posible de no bloquear las transacciones
> concurrentes que obtienen números de esta misma secuencia?
>
> Si me toca llevar la numeracion en una tabla de numeraciones (no
> utilizando secuencias) cual seria la forma correcta de bloquear las
> transacciones concurrentes para evitar que me repitan la numeracion?
>
> --
> Alexander Giraldo Salas
> IPSOFT S.A.
> alexgiraldo(at)ipsoft-sa(dot)com
> www.ipsoft-sa.com
> Calle 18 Norte No. 5-34
> Tel. Celular (573)3113345840
> Tel. Oficina (572)6603000 Ext. 132
> Cali - Colombia
>
>
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"
>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Frank Jonislla | 2007-01-05 02:56:38 | Fwd: Parametros con funciones desde vb.net |
Previous Message | Alvaro Herrera | 2007-01-05 02:48:23 | Re: sobre vacuum |