小编jcr*_*vao的帖子

postgres 中的可延迟唯一索引

查看用于 alter table 的 postgres 文档,似乎可以将常规约束标记为DEFERRABLE(更具体地说,INITIALLY DEFERRED,这是我感兴趣的)。

索引也可以与约束相关联,只要:

索引不能有表达式列,也不能是部分索引

这让我相信目前没有办法拥有一个具有条件的唯一索引,例如:

CREATE UNIQUE INDEX unique_booking
  ON public.booking
  USING btree
  (check_in, check_out)
  WHERE booking_status = 1;
Run Code Online (Sandbox Code Playgroud)

INITIALLY DEFERRED,意思是,唯一性“约束”只会在交易结束时进行验证(如果SET CONSTRAINTS ALL DEFERRED;使用)。

我的假设是否正确,如果正确,有什么方法可以实现预期的行为?

谢谢

postgresql index transaction unique-constraint

16
推荐指数
1
解决办法
8840
查看次数