【问题标题】:Enforce Unique on multiple sets of same data?对多组相同的数据强制执行唯一性?
【发布时间】:2011-07-26 00:59:01
【问题描述】:

我想做的是这样的:

a, b - 有效。
a, b - 有效。
a, c - 无效
f, b - 无效。

所以这意味着数据库将允许相同的值组合多次存在,但不允许任何其他组合使用这些值。所以它就像一个组合集上的唯一。我的用例是我在表中有一个 group_id 和 group_name。我不希望人们弄乱 ID 的 group_name。因此,如果 2 的第一个 ID 的 group_name 为 'apple',那么所有带 2 的 ID 都必须是 'apple' 并且如果输入 'banana' 则应该抛出错误。

一种方法是我使用第二个表并规范化数据,但我不能在这里这样做,需要非规范化使用它。那么是否有强制执行此检查的方法?

谢谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    可能在插入和更新触发器期间验证。

    【讨论】:

    • 我想过,但不确定如何将 group_id 链接到触发器或 previus 值。我想出的最好的方法是在插入或更新之前:“FOR EACH ROW BEGIN SET NEW.group_name = OLD.group_name。但这仅适用于设置旧值而不是之前的 group_id 值。
    猜你喜欢
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多