【发布时间】: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