根据Postgres文档 - 准备好后,事务可以稍后使用COMMIT PREPARED或ROLLBACK PREPARED分别提交或回滚。这些命令可以从任何会话中发出,not only the one that executed the original transaction.
如何使PREPARE TRANSACTION工作
我试图从CSV数据导入到数据库表中,为此,我现在用的是
COPY tablename [ (column [, ...]) ] FROM { 'filename' }
这一切都是在一个shell脚本来完成。 现在的问题是,我执行命令psql
,并通过-c
选项通过这个命令的参数(我通过命令
在命令prepare transaction 'some-id'
开始交易)。
我想创建一个保存点并回滚它以避免任何错误。
后在shell脚本中一些其他的任务,我检查错误,以前PSQL语句产生了,当我再尝试使用命令
Prepared Rollback 'transaction-id'
(在单独psql command with sql statements
)
它回滚报告“No "transaction-id" found
”
我是否在概念错误或缺少过程中的东西?
发生这种情况是因为我多次发出psql
命令,并且每次都导致新的事务?