让某列的值唯一,空值除外
我有一个使用Spring Boot的项目,已与PostgreSQL数据库集成。 我需要某一列的值唯一,非空时才要求唯一,允许有多个NULL值。 这是否可行?如何使用Liquibase的 YAML语法实现?
- column:
name: label
type: varchar(150)
constraints:
unique: true if not null
解决方案
默认情况下,PostgreSQL在唯一约束下允许出现多个NULL值。请参阅这里的文档:docs。
通常来说,如果在表中存在多于一行的情况,使得被约束包含的所有列的值都相同,那么唯一约束会被违反。默认情况下,两个NULL值在此比较中不被视为相等。这意味着即使存在唯一约束,也有可能存储包含至少一个被约束列为NULL的重复行。
这符合SQL标准,其中任何NULL都不等于任何其他NULL。
因此,在创建唯一约束时,不需要额外指定任何内容。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。