【发布时间】:2020-07-23 18:53:51
【问题描述】:
我正在尝试设置一个表并为其添加一些约束。我计划使用部分索引来添加约束以创建一些复合键,但遇到了处理 NULL 值的问题。我们有一种情况,我们希望确保在一个表中,只为给定行填充两列中的一列,并且填充的值是唯一的。我试图弄清楚如何做到这一点,但我遇到了困难。也许是这样的:
CREATE INDEX foo_idx_a ON foo (colA) WHERE colB is NULL
CREATE INDEX foo_idx_b ON foo (colB) WHERE colA is NULL
这行得通吗?此外,有没有一种好方法可以将其扩展到更多列?
【问题讨论】:
-
这可以通过触发器来完成,但通过模式更改可以更优雅地完成。您能否提供更多关于列中内容的背景信息?它们都是相似类型的值吗?
-
不一定是相似的类型。我正在尝试构建一个通用系统,可以从模式生成这些类型的约束。
标签: sql postgresql indexing constraints