Re: [GENERAL] Transacciones Anidadas

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: Juan Garcés Bustamante <jgarces(at)futuroprofesional(dot)cl>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: [GENERAL] Transacciones Anidadas
Date: 2005-12-16 20:22:34
Message-ID: 20051216202234.GC27602@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda pgsql-general

Jaime Casanova escribió:
> On 12/16/05, Juan Garcés Bustamante <jgarces(at)futuroprofesional(dot)cl> wrote:

> > BEGIN WORK;
> > INSERT INTO mitabla VALUES (1);
> > BEGIN TRANSACTION;
> > INSERT INTO mitabla VALUES (2);
> > INSERT INTO mitabla VALUES (3);
> > COMMIT TRANSACTION;
> > INSERT INTO mitabla VALUES (4);
> > ROLLBACK WORK;
> >
> > El "ROLLBACK WORK" no aborta la TRANSACTION.

Lo que realmente pasa es lo siguiente:

BEGIN WORK;
INSERT INTO mitabla VALUES (1);

BEGIN TRANSACTION;
-- WARNING: ya estas en una transaccion. Este comando ha sido ignorado.

INSERT INTO mitabla VALUES (2);
INSERT INTO mitabla VALUES (3);
COMMIT TRANSACTION;
-- Aca se compromete la transaccion que se inicio en la primera linea

INSERT INTO mitabla VALUES (4);
ROLLBACK WORK;
-- WARNING: no hay ninguna transaccion abierta.

> en verdad ocurrio eso?

Efectivamente, y es el comportamiento esperado :-)

> lo voy a probar mas tarde... aunque en postgres no existen las
> transacciones anidadas, se llaman savepoints y la sintaxis es distinta
>
> BEGIN WORK;
> INSERT INTO mitabla VALUES (1);
> SAVEPOINT foo;
> INSERT INTO mitabla VALUES (2);
> INSERT INTO mitabla VALUES (3);
> RELEASE foo;
> INSERT INTO mitabla VALUES (4);
> ROLLBACK WORK;

Esta es la forma correcta de hacerlo.

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Julio Rivero 2005-12-16 20:23:31 Re: Duda sobre tipo de datos Enteros vs. Caracteres
Previous Message Michael Fuhr 2005-12-16 20:21:52 Re: Transacciones Anidadas

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2005-12-16 20:27:25 Re: Getting a DB password to work without editing pg_hba.conf,
Previous Message Michael Fuhr 2005-12-16 20:21:52 Re: Transacciones Anidadas