SQL Server 外键

2025年3月17日 | 阅读 3 分钟

在 SQL Server 中,外键用于在 SQL Server 数据库中强制执行引用完整性。它指定一个表中的值必须也出现在另一个表中。

被引用的表称为父表,而具有外键的表称为子表。子表中的外键通常会引用父表中的主键。

可以使用 CREATE TABLE 语句或 ALTER TABLE 语句创建外键。


使用 CREATE TABLE 语句创建外键

语法

参数解释

child_table: 它指定要创建的子表的名称。

column1, column2: 它指定要在表中创建的列。每列都必须有一个数据类型。该列应定义为 NULL 或 NOT NULL,如果此值留空,则数据库假定 NULL 为默认值。

fk_name: 它指定要创建的外键约束的名称。

child_col1, child_col2, ... child_col_n: 它指定 child_table 中将引用 parent_table 中的主键的列。

parent_table: 它指定父表的名称,其主键将在 child_table 中使用。

parent_col1, parent_col2, ... parent_col3: 它指定构成 parent_table 中主键的列。外键将在此数据和 child_table 中的 child_col1、child_col2、... child_col_n 列之间强制建立链接。

示例

让我们创建两个表 "products" 和 "inventory",其中 products 表的主键是 "product_id",在 "inventory" 表中是外键。

输出

SQL Server foreign key 1

"inventory" 表中的外键约束为 fk_inv_product_id。它将在 inventory 表中的 product_id 列和 products 表中的 product_id 列之间建立关系。

现在您可以检查这两个表了。

SQL Server foreign key 2 SQL Server foreign key 3

创建具有多个字段的外键

在上面的示例中,我们看到了如何创建一个包含一列的外键。让我们创建具有多个字段的外键。

让我们创建两个表 "products2" 和 "inventory2"。在此示例中,"products2" 表有一个主键,其中包含 product_name 和 location 列。因此,第二个表和外键也必须引用这两个列。

因此,在此示例中,我们的外键名为 fk_inv_product,它基于 product_name 和 location 字段引用 products 表。

输出

SQL Server foreign key 4
下一主题启用外键