我試圖約束添加到表,其中一列必須是值中的一個類似下面的列表:爲什麼是SQL Server不工作檢查約束
ALTER TABLE bread_crumbs WITH CHECK
ADD CONSTRAINT CK_uplink_relationship
CHECK (uplink_relationship in ('Cites', 'CitedBy', null))
我可以仍然插入uplink_relationship
列的任何值的行。 CHECK
約束沒有被強制執行。
我讀了幾個答案,如果您在創建約束的同時存在違反約束的行,則可能會發生這種情況。
所以我刪除了約束,固定所有的數據,並添加約束回。
,但沒有運氣。
我仍然可以輸入無效數據。
任何想法爲什麼會發生這種情況?
此外,我嘗試了和沒有WITH CHECK
聲明的一部分。
SQL使用三個值邏輯。 'true','false','未知'。如果條件評估爲「false」,則檢查約束只會被違反。 – 2015-03-24 21:38:52
'IN(null)'計算爲'= NULL';這總是未知的。你不能檢查是否* *等於*'NULL',只有當它是'NULL'時。 – 2015-03-24 22:43:19