2012-08-09 75 views
1

我有一个电子邮件邮件列表表。每个注册用户都有一个激活密钥。激活密钥最初是在注册时创建的。每个键都是唯一的。Mysql唯一值或空字符串

一旦用户确认注册,这是数据库中的emptry字符串。

有没有一种方法可以让我创建一个独特的禁忌,如果在场中有空。

换句话说,所有值如果不为空或唯一的emptry字符串是允许的。

我设置为唯一并允许为null,但这不起作用。我无法输入空值和唯一值,即设置为空时多次为空

回答

0

不,您将无法创建这样的唯一约束,因为唯一约束就是那个,唯一的和多行NULL或一个空字符串将被重复的行。不过,我会建议你而不是清空这一列,而是使用一个布尔字段,表明注册已被确认 - 这是更直接的,然后你可以使用该字段的唯一约束。

+0

最好使用一个枚举或布尔值?,也在订阅表中我有Facebook的身份证和一个字段,用户可能不会总是用Facebook登录,但这需要是唯一的 - 同样可能发生这可能是空 - 在这种情况下,我是否分开并创建一个联接,即保持独特与加入facebook id – 2012-08-09 17:26:18

+1

@MatthewChambers - 我的道歉,与MySQL你可以有一个UNIQUE键内的多个NULL值。因此,只要您将该值设置为NULL,您仍然可以在这些字段上放置一个UNIQUE键 - 但是您无法**将它们设置为空字符串。 – 2012-08-09 18:20:23

+0

什么是最佳实践迈克 – 2012-08-09 18:32:07