如果事务被回滚,是否可以将表行字段设置为某个默认值?
考虑这样一个场景,表中的每一行都运行一个任务,该任务应该修改 state
根据实际任务状态设置字段。因此,首先任务将用 state=running
,然后它将开始一个事务,执行一些处理并用 state=complete
. 处理完成后,任务提交事务和 complete
状态变为可见。但是,如果任务突然失败(假设停电),事务将回滚,状态保持不变 running
永远。是否可以设置默认值,如 failed
在这种情况下会用它吗?
我对在postgres中这样做特别感兴趣,但我很乐意了解在任何数据库中这是否可行,或者可以做些什么来达到这样的效果。
编辑:
换句话说,我需要进行两个并发的、互斥的事务,这样如果一个失败,那么另一个就被提交。或者,可以将其视为具有持久保存点的两阶段事务。
1条答案
按热度按时间bvjxkvbb1#
您可以使用保存点:
现在,如果有错误,您将捕获该错误并执行