gpt4 book ai didi

作为复合主键一部分的 SQL 表外键

转载 作者:行者123 更新时间:2023-12-02 19:25:43 25 4
gpt4 key购买 nike

是否可以让一个表的外键成为另一个表的复合主键的一部分?例如,如果我有两个表,一个包含不同用户的所有事件项目的信息,另一个包含项目正在使用的设备的信息:

项目表:

复合主键:UserId、ProjectId(两者本身都不唯一)

设备表:

复合主键:UserId、ProjectId、EquipmentId(两者本身都不唯一)

现在可以将设备表中的ProjectId设置为项目表的外键吗?当我尝试时,收到一条错误消息,指出项目表中的列与现有主键或唯一约束不匹配?

最佳答案

没有。

当您创建外键时,您在另一个表中“指向”的键必须是 UNIQUE 或 PRIMARY KEY 约束。您不能建立指向允许重复值的列的外键。如果您更新另一个表中的重复值之一(例如),则很难想象数据应该如何“起作用”。

要执行您想要的操作,您必须建立一个 Projects 表,其中 ProjectID 为 UNIQUE 或 PRIMARY KEY,然后将其他表中的外键指向该表。

顺便说一句,您使用术语“主键”来描述每个表中构成主键的列。事实上,每个表只能有一个主键。该键可以由一列或多列组成,但键本身仍然以单数形式引用。这是使用主键优化搜索时的一个重要区别。

关于作为复合主键一部分的 SQL 表外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12679312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com