是否可以具有如下自定义唯一约束?假设我有两个 colssubset和type,两个字符串(尽管数据类型可能无关紧要)。
如果type是“真”,那么我希望的组合type,并subset是唯一的。否则,没有约束。我在 Debian 上使用 PostgreSQL 8.4。
postgresql index database-design constraint unique-constraint
我有一个存储在表中的代码列表,有些代码应该是唯一的,其他代码可以重复。这些代码应该是唯一范围到另一个字段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)