1. 在資料庫設計的過程中往往會想讓2張表進行關聯而使用到Foreign進而加強2張表之間的限制(如圖)

以前有個問題一直沒弄明白,那就是外鍵列的值的情況,正常情況下表中的列的值可以是null或者滿足該列所定義的類型的資料即可,但是外鍵是不是也一樣呢?
答案顯然不是的,那到底是個什麼情況呢?
官方幫助文檔是這樣說明的“FOREIGN KEY 限制并不僅僅可以與另一表的 PRIMARY KEY
限制相連結,它還可以定義為引用另一表的 UNIQUE 限制。FOREIGN KEY 限制可以包含空值,但是,如果任何組合 FOREIGN KEY
限制的列包含空值,則将跳過組成 FOREIGN KEY 限制的所有值的驗證。”
2.
為了驗證官方的說法,特意測試了一下,正所謂“實驗是檢驗真理的唯一标準”
首先往UserType表裡面插入一條資料--insert
UserType(Id,TypeName,CreateDateTime,ModifyDateTime)
values(NEWID(),‘系統管理者‘,GETDATE(),GETDATE())
第一次我往UserInfo(從表)中也插入一條資料如圖,但是這裡的外鍵UserTypeId我沒有給值,但是資料插入成功了。
第二次插入(如圖)
這裡面外鍵我給了一個“滿足類型”的值,結果插入失敗
最後一次插入(如圖)
OK插入成功!
3. 最好在借用官方的一句話“FOREIGN KEY 限制可以包含空值,但是,如果任何組合 FOREIGN KEY
限制的列包含空值,則将跳過組成 FOREIGN KEY 限制的所有值的驗證”。