2013-02-18 76 views
0

我有一個包含許多記錄的表。列X可以爲空,並且很多記錄在此列中有NULL。我可以在此列上創建一個UNIQUE非聚集索引嗎?不是那些違反唯一約束的空值?可空列上的唯一索引

+0

當你嘗試時發生了什麼? – 2013-02-18 03:11:19

+0

在這裏,[>>點擊此處查看演示<<](http://www.sqlfiddle.com/#!3/87e2b)*取消註釋*最後一行並再次構建模式。走着瞧吧。 – 2013-02-18 03:15:34

+0

[如何在NULL列上創建唯一索引?](http://stackoverflow.com/questions/191421/how-to-create-a-unique-index-on-a-null-column?rq=1 ) – peterm 2013-02-18 03:16:43

回答

6

如果您不是SQL Server 或更新 - 您可以設置一個過濾的唯一索引來排除/忽略所有NULL值。

CREATE UNIQUE NONCLUSTERED INDEX uixYourIndexName 
ON dbo.YourTableName(YourColumnName) 
WHERE YourColumnName IS NOT NULL 

這將基本上是「過濾掉」所有NULL值 - 這還不包括他們進入指數在所有。任何使用相同WHERE子句的查詢都可以使用此篩選索引來查找這些行。

沒有過濾索引,你可以不,因爲具有唯一索引創建你的列中的唯一索引,你只允許有一個具有該列NULL一行。