繁体   English   中英

带有条件的 MySQL UNIQUE 约束

[英]MySQL UNIQUE Constraint with a condition

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

是否可以?

谢谢。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM