我可以在2列上有2个唯一键,但不能组合吗?

问题描述:

我有一个表我可以在2列上有2个唯一键,但不能组合吗?

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

在这个表中“用户”字段是一样的,在插入时“电子邮件”。但用户可以在后面更改他们的'电子邮件'。 所以我想让电子邮件也是唯一的,如果电子邮件已经存在于表格中,插入查询失败。

是否有可能?

在此先感谢,这只是一个例子。

+0

如果您要求电子邮件是唯一的,那么为什么不把它作为主键? (我不是故意重燃关于自然与代理键的宗教辩论,但是如果你真的想在数据库层中强加唯一性约束,那么它可能是一个明智的解决方案。 – eggyal

是,添加一个UNIQUE约束

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

表将拥有独特的USER和独特Email

+0

您的意思是CONSTRAINT tb_uq UNIQUE(电子邮件)。对? –

+0

@AjitCatalányep,已更新。 –

+0

谢谢你的工作 –

您可以在表格上创建多个索引。所以如果你在你想要的列上创建2个唯一的索引,它将会以你想要的方式工作。如果您在多个列上创建1个索引,则这些列的组合必须是唯一的。