Re: Duda existencial en el uso de Triggers

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: juan <juanramirez(at)cajazacate(dot)com(dot)sv>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda existencial en el uso de Triggers
Date: 2010-05-18 18:34:34
Message-ID: 1274207494-sup-8230@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from juan's message of mar may 18 14:20:12 -0400 2010:

> Lo que busco es algo m\xc3\xa1s simple, las secuencias parec\xc3\xadan ser la
> soluci\xc3\xb3n, puesto que lo que hago es un simple INSERT no utilizo begins
> ni commit.

Creo que deberías

1. usar transacciones explícitas (BEGIN / COMMIT)

2. usar un LOCK TABLE para bloquear la tabla contra transacciones
concurrentes (sólo un proceso a la vez debe poder insertar en la tabla)

3. usar un "SELECT max(columna) FROM tabla" para obtener el valor
correlativo correcto, dependiendo del contenido de la tabla. Esto lo
puedes hacer en un trigger BEFORE.

Si lo haces de esa forma, estarás seguro que siempre funciona bien. El
paso (2) es crítico, porque impide que otro proceso utilice el mismo
valor que tú.
--

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message juan 2010-05-18 18:45:09 Re: Duda existencial en el uso de Triggers
Previous Message juan 2010-05-18 18:20:12 Re: Duda existencial en el uso de Triggers