【发布时间】:2021-01-20 04:21:52
【问题描述】:
我正在 Microsoft Sql server management Studio 上进行数据库设计,我有一个小问题。如图所示,LibraryItem 应具有与 CategoryId 的外键绑定的所需类别,该外键映射到表 Category 中的 Id。
我需要有关如何将 CategoryId(FK) 与 Id(类别表上的 PK)联系起来的帮助。我只是不知道该怎么做。
【问题讨论】:
我正在 Microsoft Sql server management Studio 上进行数据库设计,我有一个小问题。如图所示,LibraryItem 应具有与 CategoryId 的外键绑定的所需类别,该外键映射到表 Category 中的 Id。
我需要有关如何将 CategoryId(FK) 与 Id(类别表上的 PK)联系起来的帮助。我只是不知道该怎么做。
【问题讨论】:
您需要添加对创建表的脚本的引用并向约束添加名称,如下所示:
CONSTRAINT FK_LibraryItem_Category_CategoryId FOREIGN KEY ([CategoryId]) REFERENCES [dbo].[Category] ([Id])
注意:我默认使用 dbo 架构。如果您正在创建的 Category 表不同,则需要更改它。
这将为您的 LibraryItem 表创建一个外键,并将 CategoryId 链接到 Category 表中的相应记录。
还有一点需要注意:如果您的 FK 值与 Category 表中的 ID 不匹配,这将引发错误。
详细说明错误:
假设您在LibraryItem 表中的记录中添加了CategoryId 2,但Category 表中不存在ID 2 的记录,它将引发类似于这个:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_LibraryItem_Category_CategoryId". The conflict occurred in database "foo", table "dbo.LibraryItem". The statement has been terminated.
这可以通过确保两个表中的 ID 匹配来轻松解决。
【讨论】:
INSERT 脚本添加记录来测试它。