[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