加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在SQL Server 2008中创建复合外键

发布时间:2020-12-12 07:03:18 所属栏目:MsSql教程 来源:网络整理
导读:我有两个表,我想创建一个外键。 主表 PK - Key1 - varchar(20)PK - Key2 - date 二级表 PK - AutoIDFK - Key1 - varchar(20)FK - Key2 - date 当我尝试创建主表和辅助表之间的关系时,我不断收到消息 The columns in the Primary Table do not match a prima
我有两个表,我想创建一个外键。

主表

PK - Key1 - varchar(20)
PK - Key2 - date

二级表

PK - AutoID
FK - Key1 - varchar(20)
FK - Key2 - date

当我尝试创建主表和辅助表之间的关系时,我不断收到消息

The columns in the Primary Table do not match a primary key or unique
constraint.

在次表中可以有许多记录与同一个Key1和Key2,所以我们使主键成为一个自动创建的数字。

关于如何设置这两个表之间的外键关系的任何想法?

解决方法

其中一些是关注的,其中一些是其他人有这样的问题的上下文(像任何人实际上首先搜索?)

在创建密钥时遇到问题的第一件事是确保两个表中的数据类型不匹配。如果你有一个bigint在一个和一个int在另一个,它会吹。所有键上都是如此,但如果您使用多个字段,则更有可能出现。简单的数学表明机会增加的原因。

下一个问题是数据。如果由于数据而无法创建密钥,则必须找出子表中存在的父表中不存在的内容。 LEFT加入表(在连接的第二个/左侧是辅助的),只包括主表为空的行。您将必须在父表中创建这些记录,或者删除它们。

这样做的一个方法是在父表上设置一个新的主键。然后,您可以在此新主键上创建一个外键,并将其与子表中的记录进行匹配。然后,您可以设置连接,您可以进行二次操作的清洁。

哪个更好?新的主键或使用复合键?这真的取决于数据的性质,但我更喜欢在自然键或复合键上使用派生键。但是,有时候,获得单个字段派生密钥所需的工作是很多工作。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读