Según la documentación de Postgres: una vez preparada, una transacción puede comprometerse o retrotraerse posteriormente con COMMIT PREPARED o ROLLBACK PREPARED, respectivamente. Estos comandos se pueden emitir desde cualquier sesión, not only the one that executed the original transaction.
Cómo hacer que funcione PREPARE TRANSACTION
estoy tratando de importar datos desde CSV en tablas de bases de datos y para ello, estoy usando el
COPY tablename [ (column [, ...]) ] FROM { 'filename' }
Todo esto se hace en un script de shell . Ahora el problema es que estoy cumpliendo psql
comando y pasando este comando como parámetro mediante la opción -c
(comienzo a la transacción a través del comando
prepare transaction 'some-id'
en ese orden).
Quiero crear un Savepoint y deshacerlo en caso de cualquier error.
Después de algunas otras tareas en el shell script, puedo comprobar si hay errores que la declaración psql anteriores han producido y cuando luego tratar de deshacer con el comando
Prepared Rollback 'transaction-id'
(en separada psql command with sql statements
)
Se informes "No "transaction-id" found
"
¿Me estoy equivocando o me falta algo en el proceso?
¿Esto está sucediendo porque estoy emitiendo el comando psql
varias veces y cada una da como resultado una nueva transacción?