我在 postgres 上有这样的行:
name | address | college
john | rome |
john | rome |
max | tokyo |
我创建一个这样的表:
create test (
name varchar(10),
address varchar(20),
college varchar(20),
constraint test_uq unique (name,address,college);
如何使空值变得唯一,因此输出可以是这样的:
name | address | college
john | rome |
max | tokyo |
Postgres 文档claims http://www.postgresql.org/docs/8.3/static/ddl-constraints.html此行为符合 SQL 标准:
一般来说,当存在两个或多个时,就会违反唯一约束
表中的行,其中包含的所有列的值
约束条件相等。但是,不考虑两个空值
在这个比较中相等。这意味着即使存在独特的
约束可以存储包含空值的重复行
至少一个受约束列中的值。这种行为
符合SQL标准[.]
一种可能性是重新考虑您的模式(老实说,这是对name+address+college
在你的例子中没有多大意义)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)