查看用于 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;
使用)。
我的假设是否正确,如果正确,有什么方法可以实现预期的行为?
谢谢