我有一個已經存在的具有表格的數據庫。我爲其中一個表添加了外鍵關係(因爲它們引用了另一個表中的數據,只是該關係在創建表的方式上並不明確)。SQL Server - 添加外鍵關係
此更改如何影響現有數據庫?數據庫引擎是否必須對數據庫中的現有數據做一些額外的工作?如果您已經擁有使用當前數據庫架構的應用程序,此更改可以成爲「重大更改」嗎?
我有一個已經存在的具有表格的數據庫。我爲其中一個表添加了外鍵關係(因爲它們引用了另一個表中的數據,只是該關係在創建表的方式上並不明確)。SQL Server - 添加外鍵關係
此更改如何影響現有數據庫?數據庫引擎是否必須對數據庫中的現有數據做一些額外的工作?如果您已經擁有使用當前數據庫架構的應用程序,此更改可以成爲「重大更改」嗎?
確實有一些額外的工作最小限度,取決於您的數據庫服務器)來強制引用完整性。在實踐中,性能影響幾乎不會被你注意到。
它可能是一個「重大變化」 - 您的客戶端代碼可能會插入不符合參照約束的數據。如果數據庫允許您首先創建約束條件,則不太可能,但這是可能的。
創建一個外鍵約束時,您可以指定WITH NOCHECK
:
的
WITH NOCHECK
選項是有用的,當現有的數據已經滿足 新FOREIGN KEY
約束,或者當業務規則要求 約束強制執行只有從這一點出發。但是,當添加約束時,您應該小心,而不檢查現有數據,因爲這會繞過執行表的數據完整性的數據庫引擎中的控件。
如何在數據庫中添加「現有數據」?它已經不是嗎? – Bart
@bart是的數據已經存在。只是在主 - 外關係沒有明確之前 – Ghita
Sql server(2005和2008) – Ghita