[Pgsql-ayuda] Rollback..

Gunnar Wolf gwolf@campus.iztacala.unam.mx
Mon, 7 Oct 2002 09:02:11 -0500 (CDT)


> Alguien sabe, si Postgresql tiene Rollback????
>
> Y si puedo hacer una recuperacion deesde los WAL, teniendo en cuenta
> que al recuperar la informaci=F3n tendr=EDa que deshacer o hacer rollback
> a aquello que no se alcanz=F3 a confirmar antes de que ocurriera la
> falla???

Claro que lo tiene.

Ahora, para recuperar, depende c=F3mo est=E9s usando la BD. Si iniciaste tu
conexi=F3n en modo AutoCommit, pues... A menos que deshabilites ese modo,
las transacciones se registran inmediata y permanentemente (al menos,
hasta donde entiendo). Por ejemplo, en Perl:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
use DBI;
$dbh =3D DBI->connect('dbi:Pg:dbname=3Dmibd','user','passwd',
                    {AutoCommit =3D> 0,
                     # otras opciones...
                    }) or die 'No pude establecer la sesi=F3n';

# Borramos todo...
$dbh->do('DELETE FROM mitabla');
# Ac=E1 no mostrar=E1 ning=FAn registro - mitabla est=E1 vac=EDa
muestraTabla();


# Rollback...
$dbh->rollback;
# Y ac=E1 tienes todos los registros.
muestraTabla();

# Borramos de nuevo...
$dbh->do('DELETE FROM mitabla');
# Commit
$dbh->commit;
# No muestra nada - y esta vez es permanente.
muestraTabla();

sub muestraTabla {
    my $datos =3D $dbh->selectall_arrayref('SELECT * FROM mitabla');
    foreach my $i (@$datos) {
        print join(', ',@$i);
    }
}
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


--=20
Gunnar Wolf - gwolf@campus.iztacala.unam.mx - (+52-55)5623-1118
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF