3

我正在尝试为具有以下条件的两列(id_1 和 id_2)创建唯一索引约束:如果两个不同的行在 id_2 列中具有相同的值,则它们在 id_1 列中的值也必须相同。

是否可以?

谢谢。

4

3 回答 3

2

没有声明性约束来支持这种限制。您描述的场景不满足唯一约束的要求。(您可以创建约束,但不能为 id_1 和 id_2 添加多个具有相同值的行。

如果您的意图是基于此限制拒绝插入或更新,您可以使用行级触发器来完成此操作。

于 2011-02-18T14:51:52.827 回答
0

您可以通过构建一个检查这些行并将其集成到触发器中的查询来做到这一点。您将无法使用约束来做到这一点,当然也不能使用唯一约束。唯一约束强制行具有唯一值。这意味着对于约束中的一个或多个字段,没有两行可以具有相同的值。

于 2011-02-18T14:51:58.887 回答
0

这是不可能的。id_1对and的唯一约束id_2将强制每一行具有不同(唯一)的id_1和组合id_2。这与你所描述的完全相反。

您可以通过使用触发器来强制执行您的要求,但鉴于您提供的信息量很少,我不能说这是否是最佳解决方案。

复合外键也可以是解决方案,但我不知道id_1id_2指的是什么,所以很难说,真的。

于 2011-02-18T14:52:31.937 回答