可以在可包含NULL的列上创建唯一约束。但是,至多只有一行可能在该列中包含NULL。唯一约束列只能包含一个NULL值
我不明白为什么会出现这种情况,因为根据定义,NULL不等于另一个NULL(因为NULL实际上是一个未知值,一个未知值不等于另一个未知值)。
我的问题: 1.这是为什么? 2.这是特定于MsSQL吗?
我有一种预感,那是因为唯一约束可以充当外键的引用字段,否则FK将不知道引用表中的哪个记录,如果多于一条记录与NULL存在。但是,这只是一种预感。
(是的,我明白,UCS可以跨越多个列,但是这并没有改变的问题,相反,它只是有点复杂了。)
您可以粘贴CREATE TABLE语句。难道是你设置值'NULL'作为字符串而不是真正的NULL –
公平的评论,但是,不,它不是一个字符串;它是一个整数字段。尝试输入或将现有的整数值更改为NULL会导致“违反UNIQUE KEY约束...不能在对象中插入重复键...” –