【问题标题】:postgresql transaction: check for query errorpostgresql 事务:检查查询错误
【发布时间】:2013-07-30 07:57:00
【问题描述】:

我正在编写一个实现事务的 postgresql 函数。这是代码的样子:

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

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

【问题讨论】:

  • 您不需要检查错误。如果其中一个命令抛出错误,事务将自动回滚。
  • 所以我可以在明确的情况下调用回滚(即我调用选择查询并且返回值大于常量)?
  • 是的。但是很少使用显式回滚。大多数时候最好抛出一个错误,这将导致回滚。此类错误会明确说明回滚的原因。
  • 事务控制不能在 postgresql 函数中使用。请参阅:Commit, savepoint, rollback to in PostgreSQL?

标签: sql postgresql stored-procedures transactions


【解决方案1】:

检查和处理错误很好。始终如一地做。虽然事务会自动回滚,但您可能希望提醒用户记录问题,或采取其他措施。也就是说,如果出现数据库错误,事务将自行回滚。

另一方面,如果由于应用程序错误(数据库外部)而需要回滚事务,则发出ROLLBACK 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2021-04-12
    相关资源
    最近更新 更多