相关疑难解决方法(0)

自定义唯一约束,仅当一列具有特定值时强制执行

是否可以具有如下自定义唯一约束?假设我有两个 colssubsettype,两个字符串(尽管数据类型可能无关紧要)。

如果type是“真”,那么我希望的组合type,并subset是唯一的。否则,没有约束。我在 Debian 上使用 PostgreSQL 8.4。

postgresql index database-design constraint unique-constraint

25
推荐指数
2
解决办法
8732
查看次数

如何创建一个唯一的索引,只有某些值需要是唯一的?

我有一个存储在表中的代码列表,有些代码应该是唯一的,其他代码可以重复。这些代码应该是唯一范围到另一个字段product_id.

假设每个代码11只允许一次product_id,并且允许其他代码重复,该表将如下所示:

product_id     code
1              11   # Needs to be unique for product_id 1
1              222
1              222
1              333
2              11   # Needs to be unique for product_id 2
2              222
2              444
Run Code Online (Sandbox Code Playgroud)

使用 MySQL,我利用了一个事实,即您可以在唯一索引中拥有多个 NULL 值,因此通过添加一个“决胜局”(?) 字段ucode,我能够一起破解一个解决方案:

product_id  code   ucode
1           11     1    # Code 11 needed to be unique, so 1 for ucode
1           222    NULL # Code 222 can be repeated, so NULL for ucode
1           222    NULL …
Run Code Online (Sandbox Code Playgroud)

mysql unique-constraint

3
推荐指数
1
解决办法
1988
查看次数