NULL和唯一約束UNIQUE的對應關係

大學霸發表於2017-04-28
NULL和唯一約束UNIQUE的對應關係

在資料庫中,NULL表示列值為空。唯一約束UNIQUE規定指定列的值必須是唯一的,值和值之間都不能相同。這個時候,就出現一個問題,NULL和NULL算是相同,還是不同。由於SQL語法沒有明確規定,所以各個資料庫廠商的處理方式不同。

(1)PostgreSQL和Oracle認為NULL表示沒有指定資料,所以資料有多種可能,所以UNIQUE約束列中允許存在任意個NULL。

(2)Informix和SQL Server認為NULL就表示空,是一種唯一的狀態。所以UNIQUE約束列中只能有一個NULL。

(3)DB2、SQLAnyWhere和InterBase認為NULL存在不確定性,無法比較,所以UNIQUE約束列中不允許有NULL。

而SQLite遵循了PostgreSQL和Oracle的策略,允許UNIQUE約束列中有任意個NULL。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2138162/,如需轉載,請註明出處,否則將追究法律責任。

相關文章