2009-02-25 51 views
0

表中有一个允许空值的nvarchar列。一旦有非空值,它必须是唯一的。Contraint - 唯一或空

是否可以在没有触发器的情况下定义此规则?

编辑:

http://decipherinfosys.wordpress.com/2007/11/30/multiple-null-values-in-a-unique-index-in-sql-serverdb2-luw/

是一个很好的解决方法。我看到的唯一问题是主键可能在某些时候与我希望是唯一的列中的某个值相同。这就是为什么我添加一个固定的字符串,我知道从来没有出现在约束列中。

回答

1

在tehvan发布的链接中没有提到的一个解决方案是索引视图。 (创建一个视图,排除具有空列值的行并在视图上添加唯一索引)。

如果您不想将其他列添加到基表中,则可能首选此方法。两种方法都需要您启用正确的ANSI设置。