Re: Debo usar Transacciones?

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Miguel Angel <mvillagomez(at)sayab(dot)com(dot)mx>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Debo usar Transacciones?
Date: 2006-04-19 22:07:11
Message-ID: 20060419220710.GA28629@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Miguel Angel escribió:

> Alvaro gracias por los ánimos jejeje. Solo una duda más no conozco LOCK
> TABLE voy a buscarla, pero esta se usa en funciones o en un query normal?,
> podrías darme un muy pequeño ejemplo, por favor.

BEGIN
LOCK TABLE tabla_de_algo;
SELECT max(id_de_algo) + 1 FROM tabla_de_algo;
insert ... VALUES (el_valor_que_obtuviste, ...)
COMMIT

Observa que aqui el bloque de transaccion no es opcional. Si lo omites,
el LOCK TABLE no tiene ningun efecto, puesto que todos los locks se
liberan cuando la transaccion termina.

Otra cosa a observar es que en Postgres siempre hay una transaccion; si
no la abres y cierras explicitamente, entonces se abrira y cerrara para
cada comando que envies. Por ejemplo aca hay una transaccion que
inserta en dos tablas:

BEGIN
insert into tabla_uno values (...)
insert into tabla_dos values (...)
COMMIT

En cambio aca hay dos transacciones que insertan cada una en una tabla:

insert into tabla_uno values (...)
insert into tabla_dos values (...)

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2006-04-20 04:54:28 Re: Problema con IF NOT FOUND en función plpgsql
Previous Message Miguel Angel 2006-04-19 21:38:58 RE: Debo usar Transacciones?