我使用
Postgresql与PostGIS扩展进行自组织空间分析.我通常在psql中手工构造和发出SQL查询.我总是在事务中包装一个分析会话,所以如果我发出一个破坏性的查询,我可以回滚.
但是,当我发出包含错误的查询时,它将取消该事务.任何进一步的查询都会引发以下警告:
ERROR: current transaction is
aborted,commands ignored until end of
transaction block
有没有办法把这个行为关掉?回滚事务是很麻烦的,并且每次打错时重新运行以前的查询.
解决方法
(更新:不用手动这个,我在postgresql邮件列表中询问,而且这个行为已经实现了,由psql客户端中的
ON_ERROR_ROLLBACK设置)
要详细说明Simon的答案(1),在您的方案中,您可以在每次交互式查询后通常添加一个保存点,始终使用相同的名称(如果查询是成功的,它会覆盖前一个).在出现错误的情况下,您可以返回上一次保存的,并从那里继续.
这个工作模式的一个例子:
db=# select * from test_gral ; i | t | n ---+------+------ 1 | text | 10.0 (1 row) db=# begin; BEGIN db=# insert into test_gral values (2,'xx',20); savepoint sp; INSERT 0 1 SAVEPOINT db=# insert into test_gral values (3,30); savepoint sp; INSERT 0 1 SAVEPOINT db=# insert into test_gralxx values (4,40); savepoint sp; ERROR: relation "test_gralxx" does not exist LINE 1: insert into test_gralxx values (4,40); ^ ERROR: current transaction is aborted,commands ignored until end of transaction block db=# ROLLBACK TO SAVEPOINT sp; ROLLBACK db=# insert into test_gral values (4,40); savepoint sp; INSERT 0 1 SAVEPOINT db=# commit; COMMIT db=# select * from test_gral ; i | t | n ---+------+------ 1 | text | 10.0 2 | xx | 20 3 | xx | 30 4 | xx | 40 (4 rows)
原文地址:https://www.jb51.cc/mssql/75747.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。