2013-07-30 27 views
0

我在写一个postgresql函数来实现事务。代码如下所示:postgresql事务:检查查询错误

BEGIN TRANSACTION REPEATABLE READ 
INSERT INTO table1 VALUES(value1, value2); 
INSERT INTO table2 VALUES(value3); 
COMMIT 
END; 

现在我需要检查一个插入查询是否返回插入回滚的某种错误。我该怎么做?

+1

您不需要检查错误。如果其中一个命令抛出错误,事务将自动回滚。 –

+0

所以我可以在明确的情况下调用回滚(即我调用select查询并返回值大于常量)? – giozh

+0

是的。但显式回滚很少使用。大多数时候抛出一个错误会更好,这会导致回滚。这种错误将清楚地说明回滚的原因。 –

回答

-1

检查和处理错误很好。始终如一地执行。虽然交易会自动回滚,但您可能希望提醒用户记录问题,或采取其他措施。这就是说,如果有数据库错误,交易将自行回滚。另一方面,如果由于应用程序错误(在数据库之外)需要回滚事务,则会发出ROLLBACK命令。