繁体   English   中英

SQL Server-添加外键关系

[英]SQL Server - add foreign key relationship

我已经有一个带有表的数据库。 我为其中一个表添加了外键关系(因为它们是从另一个表中引用数据,只是这种关系在创建表的方式中不是明确的)。

此更改如何影响现有数据库? 数据库引擎是否必须对数据库中的现有数据做一些额外的工作? 如果您已经拥有使用当前数据库架构的应用程序,那么此更改是否可以成为“重大更改”?

如果添加了引用约束,则数据库将存储该约束并确保对其进行维护。 例如,如果表A具有引用表B的外键,则您不能在表A中插入引用表B中不存在的键的行。

确实有一些额外的工作(尽管很少,具体取决于您的数据库服务器)来实现参照完整性。 在实践中,性能影响几乎不会引起您的注意。

这可能是“重大更改”-您的客户端代码可能会插入不符合引用约束的数据。 如果数据库允许您首先创建约束,则不太可能,但是有可能。

您可以在创建外键约束时指定WITH NOCHECK

当现有数据已经​​满足新的FOREIGN KEY约束时,或者当业务规则要求仅从此点开始强制执行约束时, WITH NOCHECK选项将非常有用。

但是,在添加约束而不检查现有数据时应格外小心,因为这会绕过数据库引擎中用于强制执行表数据完整性的控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM