在 SQL 中,是否可以向不需要的字段添加唯一约束?



我有一个标准的用户实体,包含名称、手机号码和电子邮件地址。当然,我不希望电子邮件地址有任何重复,但我也不希望它是必需的。我不确定一个唯一的约束是否允许多个记录为空。(这难道不违反独特性吗?(这可能吗?如果是,我如何在JPA中指定这个约束?

总之,是的,这是可能的。唯一性意味着列不能有两个相等的值。SQL中的null不是值,而是缺少值。由于它们不是值,因此不会影响唯一性,并且一个唯一列可以有任意多个null

在JPA中,可以使用@Column注释的unique属性来指定:

@Column(unique=true)
String email;

唯一约束不允许多个null值,但有一个解决方案-https://www.red-gate.com/simple-talk/blogs/allow-nulls-unique-fields/

在电子邮件列上使用唯一约束将实现您想要的功能。这已经在这里得到了回答-允许在唯一列中为null。

@Column(unique=true)
String email;

最新更新