【问题标题】:Ways to Tie with foreign key WITH primary key on SQLSQL上与外键和主键绑定的方法
【发布时间】:2021-01-20 04:21:52
【问题描述】:

我正在 Microsoft Sql server management Studio 上进行数据库设计,我有一个小问题。如图所示,LibraryItem 应具有与 CategoryId 的外键绑定的所需类别,该外键映射到表 Category 中的 Id。

SEE THE IMAGE

SECOND IMAGE

我需要有关如何将 CategoryId(FK) 与 Id(类别表上的 PK)联系起来的帮助。我只是不知道该怎么做。

【问题讨论】:

    标签: c# sql asp.net database


    【解决方案1】:

    您需要添加对创建表的脚本的引用并向约束添加名称,如下所示:

    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 匹配来轻松解决。

    【讨论】:

    • 如果外键匹配?你的意思是?请说得更清楚些。
    • @Dell97 已更新以回答您的其他问题。
    • 我明白了,请您检查上面的第二张图片,告诉我是否做对了。我已经更新了我的问题。
    • 是的,这对我来说是正确的。干得好:)。我建议您尽可能使用INSERT 脚本添加记录来测试它。
    • 很遗憾没有,但我会留意您可能对此有任何疑问,并会尽我所能提供帮助。祝你面试顺利,你会做得很好。利用网络上的资源也是展示主动性的好方法,所以你会做得很好。
    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2020-12-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多