| From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
|---|---|
| To: | Aland Laines <aland(dot)laines(at)gmail(dot)com> |
| Cc: | POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
| Subject: | Re: Una de Transacciones |
| Date: | 2013-11-21 23:04:57 |
| Message-ID: | 20131121230457.GF6041@eldon.alvh.no-ip.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-es-ayuda |
Aland Laines escribió:
> Tengo una aplicativo donde comienzo la escritura en la DB con el begin() al
> fallar hace rollback, y si no corre el commit(), pero me he dado cuenta que
> el id que es de tipo serial, no continua el correlativo cuando falla.
> O sea debería ser 1,2,3,4, pero como hubo rollbacks estas asi 1,13, 15, 21.
La única manera segura de conseguir consecutivos es bloquear algo y
mantenerlo bloqueado hasta que la transacción que inserta el nuevo
número haga COMMIT. Por ejemplo puedes bloquear un registro (SELECT FOR
UPDATE) o una tabla (LOCK TABLE). De esa forma, la siguiente
transacción que quiera insertar tiene que esperar hasta saber si la tuya
hizo commit o no, para evitar dejar el agujero en la numeración.
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
-
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 | Alvaro Herrera | 2013-11-21 23:12:27 | Re: acceso a FOR con tablas como parametros |
| Previous Message | Miguel Beltran R. | 2013-11-21 23:00:44 | Re: OT Detectar similitud de datos |