我可以为自然id字段添加唯一约束,这样只有非空值才应该是唯一的,但允许多个空值吗?
答案 0 :(得分:2)
是即可。根据文档
,这听起来像是默认行为通常,当表中有两行或更多行时,约束中包含的所有列的值相等,则违反了唯一约束。但是,在此比较中,空值不被视为相等。这意味着即使存在唯一约束,也可以在至少一个约束列中存储包含空值的重复行。此行为符合SQL标准,但我们听说其他SQL数据库可能不遵循此规则。因此在开发可移植的应用程序时要小心。
http://www.postgresql.org/docs/8.1/static/ddl-constraints.html