【问题标题】:Can I have 2 unique keys on 2 columns but not combination?我可以在 2 列上有 2 个唯一键但不能组合吗?
【发布时间】:2012-12-13 01:59:54
【问题描述】:

我有一张桌子

table userinfo (
     user,
     email,
     address,
     primary key(user)
);

在此表中,“用户”字段与插入时的“电子邮件”字段相同。但是用户可以稍后更改他们的“电子邮件”。 所以我希望电子邮件也是唯一的,如果表中已经存在电子邮件,则插入查询失败。

有可能吗?

提前致谢,这只是一个例子。

【问题讨论】:

  • 如果您要求电子邮件是唯一的,那么为什么不将它作为您的主键呢? (我并不是要重新引发关于自然键与代理键的宗教辩论,但如果您真的想在数据库层中施加唯一性约束,那么它可能是一个明智的解决方案。

标签: mysql sql multiple-columns unique-key


【解决方案1】:

是的,添加 UNIQUE 约束

table userinfo (
     user,
     email,
     address,
     primary key(user),
     CONSTRAINT tb_uq UNIQUE (email)
);

该表现在将具有唯一的USER 和唯一的Email

【讨论】:

    【解决方案2】:

    您可以在一个表上创建多个索引。因此,如果您仅在所需的列上创建 2 个唯一索引,它将按您的意愿工作。如果您在多个列上创建 1 个索引,则这些列的组合需要是唯一的。

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      相关资源
      最近更新 更多