引用完整性概述

引用完整性是一种规则体系,这些规则可确保相关表中各行间关系的有效性,并确保不会意外删除或更改相关的数据。

备注

为 SQL Server 2012 格式的数据库提供了一个新版本的表设计器。本主题介绍表设计器的旧版本,可将其与 SQL Server 早期格式的数据库配合使用。

在新版本中,可通过图形界面或直接在脚本窗格中更改表定义。如果使用图形界面,表定义将在脚本窗格中自动更新。若要在脚本窗格中应用 SQL 代码,请选择“更新”按钮。有关新版本的详细信息,请参阅如何使用表设计器创建数据库对象

过程

当下列所有条件都满足时,可以设置引用完整性:

  • 来自主键表的匹配列是主键或具有唯一约束。

  • 外表中的相关列具有相同的数据类型和大小。

当强制引用完整性时,您必须遵守下列规则:

  • 如果某个值在相关表的主键中不存在,则不能在该相关表的外键列中输入该值。 但是,可以在外键列中输入空值。 例如,不能指定将职位分配给未包括在 employee 表中的职员,但可以通过在 employee 表的 job_id 列中输入空值来指定某个职员未分配有职位。

  • 如果在相关表中存在与某行匹配的行,则不能从主键表中删除该行。 例如,如果在 employee 表中给多个职员分配了由 jobs 表中某行所代表的职位时,则不能删除该行。

  • 如果主键表的某行有相关行,则不能更改主键值。 例如,如果 employee 表中有职员具有 jobs 表中某行的 job_id,则不能更改该行在 jobs 表中的 job_id 值。

请参见

参考

“外键关系”对话框

其他资源

使用关系

数据库对象