我正在尝试编写一个约束,说明每个 ID,只能有一个值为 X 的行。
这可能没有多大意义,所以让我举个例子:
假设我在一个表中有 3 行和 2 列,每一行都有相同的 ID(第 1 列),但第二列有不同的值,其中两个是相同的,第三个是唯一的。如何确保唯一值保持唯一?
这是我一直在使用的约束:
ADD CONSTRAINT myConstraint UNIQUE (col1, col2);
我认为我可以将 col2 设为 NULL 并有重复项,然后在我唯一的时候使用 NOT NULL(因为我只关心单个值是否唯一)。这不起作用的原因是由于某种原因我的约束不允许重复的 NULLS,几乎就像它知道如何比较 NULL...
理想情况下我想说
ADD CONSTRAINT myConstraint UNIQUE (col1, col2 = 'REQUESTED');
但这样的东西不存在。
我研究了CHECK
约束,但我不知道如何告诉它使用检查约束来做到这一点。
基本上我想获取传入的 ID 并确保没有其他相同的 ID 具有 column2 值REQUESTED
。
对不起,如果这没有多大意义,我正在尽力解释这一点。