我对postgresql中的事务有点陌生。我读了很多教程,但我想做的是.例如,如果我有许多疑问:
INSERT INTO a (id) VALUES (1)
INSERT INTO a (id) VALUES (2)
INSERT INTO a (id) VALUES (3)
INSERT INTO a (id) VALUES (4)
....
如果由于某些问题,它在第3次或第9次查询中失败了,我想要的是自动回滚所有以前的查询。
我的问题是,在postgresql中有什么方法可以做到吗?
假设在PostgreSQL中有表,如下所示:
CREATE TABLE A
(
userid integer,
productid integer,
description citext,
price numeric
)
还有一些触发因素:
CREATE TRIGGER afterinsert
AFTER INSERT
ON A
FOR EACH ROW
EXECUTE PROCEDURE DoSomething1();
CREATE TRIGGER beforeinsert
BEFORE INSERT
ON A
FOR EACH ROW
EX
我不小心更新了表中1列的71行。这是产品,我想学习如何恢复这些更改。这是一个PostgreSQL环境。
就在更新之后,我意识到哪里缺少条件。我回滚它,但是:
db=# ROLLBACK;
WARNING: there is no transaction in progress
ROLLBACK
不确定它怎么不会被回滚。我没有备份文件。否则,我会在本地复制文件并存储在数据库中。那么,有没有人能建议我如何恢复这些更改呢?
有没有办法让PostgreSQL存储日志,并且可以用来恢复我的数据?
我希望正确地处理事务执行时可能引发的IntegrityError异常,乍一看,我看到了实现这一异常的两种方法,但不确定两者是否正确,有人能澄清两者是否正确,以及为什么?
注意事项:我在使用PostgreSQL
# alternative one
try:
with transaction.commit_on_success():
# db operation 1
# db operation 2
except IntegrityError:
transaction.rollback()
#alternative two
with transaction.commi
我得到了以下异常:
2015-06-23 12:34:30.015 ERROR findRequest:224 - get failed
org.hibernate.TransactionException: nested transactions not supported
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:154)
at org.hibernate.internal.SessionImpl.beginTransaction(S
当应用程序将行插入数据库(PostgreSQL9.1)时,我在我的PlayFramework 2.1.4应用程序上面临问题。实际上,每20个插入应用程序都会抛出以下异常,导致DB连接未正确关闭:
c.a.e.c.d.SequenceIdGenerator - Error closing Connection
org.postgresql.util.PSQLException: Cannot change transaction read-only property in the middle of a transaction.
at org.postgresql.jdbc2.AbstractJ
我的PostgreSQL 10.5数据库中有以下语句,在repeatable read事务中执行:
delete from task
where task.task_id = (
select task.task_id
from task
order by task.created_at asc
limit 1
for update skip locked
)
returning
task.task_id,
task.created_at
不幸的是,当我运行它时,我有时会得到:
[67] ERROR: could not s
我在@Transactional(readOnly=true)中有一些服务层方法,这个方法经常导致一些RuntimeException (假设这是一些NotFoundException异常)。
我也在DB交互过程中使用ORM Hibernate。
这样做是否合法?
在这种情况下,“回退”行为的默认行为是什么?它是否会对连接的状态产生严重的影响,或导致任何问题?
这并不是说“为什么不自己来试试呢?”我怀疑这可能会在一些异常之后导致同一方法中的Transaction rolled back because it has been marked as rollback-only错误。这可能是非常具