小编Kay*_*Ess的帖子

跨表中所有数据的复杂约束

我们有一个表来记录系统上发生的处理,我们需要确保只有一行处于“处理中”状态。

我想确保结果始终为零或一:

select count(id) from jobs where status in ('P', 'G');
Run Code Online (Sandbox Code Playgroud)

我们正在使用显式事务,因此理想情况下,此检查将在提交时进行,如果不变量不成立则中止事务。对于我们来说,处理任何偶尔会引发错误的异常处理比突然以多个“正在进行”的工作结束要容易得多。

该解决方案只需要与 Postgres 一起使用,因此我们很乐意为此采用非标准解决方案。我们目前使用 8.4,但如果有任何不同,我们将在某个时候升级到 9.x。

postgresql constraint transaction data-integrity postgresql-8.4

4
推荐指数
1
解决办法
3173
查看次数