【问题标题】:Create two columns with pairwise uniqueness创建具有成对唯一性的两列
【发布时间】:2016-06-02 21:34:26
【问题描述】:

是否可以在 MySQL 中同时创建两个唯一索引

例如,有一个表包含两个 ID - 客户 ID 和产品 ID。 我想为 仅对创建唯一性。 简单来说,用户和产品的组合只能出现一次。 可以根据需要尽可能多地出现使用其他产品的同一用户。 并且可以根据需要尽可能多地展示与其他用户相同的产品。 但是这对本身是独一无二的。怎么样?

这个查询实际上有一个 OR 关系。我正在寻找 AND 关系。

ALTER TABLE top ADD CONSTRAINT unique_pair UNIQUE (uid, pid)

【问题讨论】:

  • 看看这个。这是你想要实现的吗? stackoverflow.com/questions/21991367/…
  • 你的语法做你想做的。
  • 好像不是。如果我将同一用户插入另一个产品,它会显示 UNIQUE 并且不会插入到表中。
  • 那么你的表上有另一个索引,你需要删除它
  • 唯一的索引是单独列上的主键。这两列没有索引。仔细检查。

标签: mysql unique-constraint unique-key


【解决方案1】:

这和你描述的一样:

ALTER TABLE top ADD CONSTRAINT unq_top_unique_pair UNIQUE (uid, pid);

同样如此:

CREATE UNIQUE INDEX unq_top_uid_pid ON TOP(uid, pid);

这两者都创建了一个唯一索引,然后用于强制执行约束。

【讨论】:

  • 好像不是。如果我将同一用户插入另一个产品,它会显示 UNIQUE 并且不会插入到表中。
  • @Dinly 。 . .那么也许您只有在uid 上有另一个 约束。每个约束都与其他约束分开评估。
猜你喜欢
  • 2020-06-28
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
相关资源
最近更新 更多