【发布时间】:2022-01-25 11:09:55
【问题描述】:
问题:在表格中;第 1 列对于第 2 列的相同值不是唯一的,但第 1 列的值对于第 2 列的不同值是唯一的。如何在 postgreSQL db 中实现此条件。
说明
假设表1存在于DB中
表 1
| Column A | Column B | Extra |
|---|---|---|
| One | apple | green |
| One | apple | blue |
| Two | apple | pink |
| Three | orange | purple |
对于列 B 为“苹果”,如果在列 A 中存在值“一”,那么对于列 B 的任何其他值,列 A 将不具有“一”。
示例:表 2 中的元素不应存在
表2
| Column A | Column B | Extra |
|---|---|---|
| One | orange | red |
**Extra 列可以有任何值
【问题讨论】:
-
如果你想禁止/排除存在于另一个表中的值:这只能通过触发器来完成。
-
这是一个糟糕的设计,是 DB 标准化到更高 NF 的那种设计。
标签: postgresql unique-constraint