我有一個表的控制,類似UNIQUE約束由位柱
FieldsOnForms(
FieldID int (FK_Fields)
FormID int (FK_Forms)
isDeleted bit
)
對(FieldID,FormID)應該是唯一的,但僅當該行沒有被刪除(請將isDeleted = 0)。
是否可以在SQLServer 2008中定義這樣的約束? (不使用觸發器)
P.S.設置(FieldID,FormID,isDeleted)爲唯一添加了將一行標記爲已刪除的可能性,但是我想有機會將n行(每個FieldID,FormID)設置爲isDeleted = 1,並且只有一行請將isDeleted = 0
+1最佳答案... – gbn 2010-10-22 16:55:44
雖然我有一些錯誤,由於位字段(轉換列常數的數據類型不支持篩選索引),這似乎是我正在嘲笑的解決方案。 – jaraics 2010-10-26 07:47:56
@jaraics - 我剛剛在你的問題中創建了表格,然後在我的答案中創建了索引,並創建了沒有錯誤的表格。此外,如果遇到數據類型不匹配,通常將CAST(或CONVERT)常量更改爲列的類型,而不是相反。不知道這是否能解決您的問題。 – 2010-10-26 07:55:40