Sql-Server
表級 ANSI_NULL 設置有什麼相關性?
顯然,SQL Server 在創建表時會儲存目前的 ANSI_NULL 設置(請參閱此處和此處的相關問題)。
但是,當我執行
SELECT * FROM myVeryOldTable WHERE someFieldWithNullValues = NULL
即使舊表是使用 ANSI_NULL OFF 創建的,我也得到零結果。因此,顯然,SQL Server 使用目前連接設置,即 ANSI_NULL ON。
如果是這樣的話,儲存在表中的設置有什麼不同(除了在各種情況下製造麻煩)?如果連接設置總是覆蓋表設置,為什麼還要儲存它?
表級 ANSI_NULLS 設置對於自動表級操作很重要,例如處理計算列時。這也適用於其他對象,例如觸發器(如此處所示)。
對於針對錶的操作(即查詢中的比較),連接適用 - 如果您不期望您主動執行的操作與自動操作之間的行為差異,這可能會非常令人困惑。