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 (<hiv...@gmail.com>) 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. > >