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.
>
>

Reply via email to