SQL Server - 添加外键关系
问题描述:
我有一个已经存在的具有表格的数据库。我为其中一个表添加了外键关系(因为它们引用了另一个表中的数据,只是该关系在创建表的方式上并不明确)。SQL Server - 添加外键关系
此更改如何影响现有数据库?数据库引擎是否必须对数据库中的现有数据做一些额外的工作?如果您已经拥有使用当前数据库架构的应用程序,此更改可以成为“重大更改”吗?
答
确实有一些额外的工作最小限度,取决于您的数据库服务器)来强制引用完整性。在实践中,性能影响几乎不会被你注意到。
它可能是一个“重大变化” - 您的客户端代码可能会插入不符合参照约束的数据。如果数据库允许您首先创建约束条件,则不太可能,但这是可能的。
答
创建一个外键约束时,您可以指定WITH NOCHECK
:
的
WITH NOCHECK
选项是有用的,当现有的数据已经满足 新FOREIGN KEY
约束,或者当业务规则要求 约束强制执行只有从这一点出发。但是,当添加约束时,您应该小心,而不检查现有数据,因为这会绕过执行表的数据完整性的数据库引擎中的控件。
如何在数据库中添加“现有数据”?它已经不是吗? – Bart
@bart是的数据已经存在。只是在主 - 外关系没有明确之前 – Ghita
Sql server(2005和2008) – Ghita