Sql Server 2008R2版本中有关外键Foreign的使用
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 約束的所有值的驗證”。
總結
以上是生活随笔為你收集整理的Sql Server 2008R2版本中有关外键Foreign的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式解析学习(一)
- 下一篇: 管线命令 cut grep