Hola Hellmuth, puedes utilizar savepoint en tus transacciones y luego
rollback a ese savepoint que quieres volver
por ejemplo
test=# CREATE TABLE TEMP2(id int);
CREATE TABLE
test=# begin;
BEGIN
test=#
test=#
test=# insert into temp2(id) values (1),(2),(3);
INSERT 0 3
test=# savepoint punto1;
SAVEPOINT
test=# selec * from temp2;
ERROR: error de sintaxis en o cerca de «selec»
LÍNEA 1: selec * from temp2;
^
test=# ROLLBACK TO SAVEPOINT punto1;
ROLLBACK
test=# commit;
COMMIT
test=# select * from temp2;
id
----
1
2
3
(3 filas)
test=#
Saludos
El jue., 10 ene. 2019 a las 17:01, Hellmuth Vargas (<[email protected]>)
escribió:
> Hola Lista
>
> esta aun temprano en el año para poner pereque, pero les tengo la
> siguiente duda: he tenido que trabajar en consola estos últimos días y pues
> aveces (mas frecuente de lo que quisiera) se comenten errores al digitar,
> el asunto en concreto es que se puede tener una transaccion abierta,
> ejecutando sentencias y de pronto se comete un error de SINTAXIS y la
> transacción se pierde :-S. creo que no debería porque no se trata de un
> error de referencialidad ni check,ni unique... en general un error que
> afecte la integridad de la base...o que opinan ustedes?
>
> A continuación un ejemplo:
>
>
> /opt/PostgreSQL/9.5/bin/psql -U postgres -W pruebas
> Password for user postgres:
> psql (9.5.9)
> Type "help" for help.
>
> pruebas=#
> pruebas=# CREATE TABLE TEMP2(id int);
> CREATE TABLE
> pruebas=# begin;
> BEGIN
> pruebas=# insert into temp2(id) values (1),(2),(3);
> INSERT 0 3
> pruebas=#
> pruebas=# select * from temp2;
> id
> ----
> 1
> 2
> 3
> (3 rows)
>
> pruebas=# selec * from temp2;
> ERROR: syntax error at or near "selec"
> LINE 1: selec * from temp2;
> ^
> pruebas=# select * from temp2;
> ERROR: current transaction is aborted, commands ignored until end of
> transaction block
> pruebas=# commit;
> ROLLBACK
> pruebas=# select * from temp2;
> id
> ----
> (0 rows)
>
>
>
>
>
> --
> Cordialmente,
>
> Ing. Hellmuth I. Vargas S.
>
>