2009-02-25 49 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設置。