我有一个电子邮件专栏,我想是独一无二的。但我也想让它接受空值。我的数据库可以有2个空邮件吗?

我有一张桌子:

table votes (
    id,
    user,
    email,
    address,
    primary key(id),
);

现在我想让列用户,电子邮件,地址唯一(一起)。

如何在MySql中做到这一点?

当然这个例子只是…一个例子。所以请不要担心语义。

我从谷歌搜索开始,找到了如何在标准SQL中写INSERT如果不存在查询,其中讨论了互斥表。

我有一个包含1400万条记录的表。如果我想以相同的格式添加更多的数据,是否有一种方法可以确保我想要插入的记录不存在,而不使用一对查询(即,一个要检查的查询和一个要插入的查询是结果集为空)?

如果字段已经存在,对字段的唯一约束是否保证插入将失败?

似乎只有一个约束,当我通过PHP发出插入时,脚本就会出错。