gpt4 book ai didi

sql - 如何在外键约束中使用两列

转载 作者:行者123 更新时间:2023-12-05 09:21:49 27 4
gpt4 key购买 nike

我有两个表:

  1. 文章
  2. 订阅

Article 表中,我有两列组成主键:idsl。在 Subscription 表中,我有一个外键“idsl”。

我使用这个约束:

constraint FK_idsl 
foreign key (idsl) references CSS_SubscriptionGroup(id, sl)

但是当我运行查询时,出现了这个错误:

Number of referencing columns in foreign key differs from number of referenced columns, table X

最佳答案

In Article Table I have two fields that are the primary key: id,sl. In the Subscription Table I have a foreign key 'idsl`

此设计已损坏 - 显然 Article(id, sl) 中的复合主键已被破坏为表 Subscription 中的单个复合外键。这不是个好主意。

相反,您需要更改表 Subscription 的设计,以包含相同类型的 idsl 的单独列作为 Article 表,然后创建一个由两列组成的复合外键,以与主键相同的顺序引用 Article,例如:

CREATE TABLE Article
(
id INT NOT NULL,
sl VARCHAR(50) NOT NULL,
-- Other Columns

CONSTRAINT PK_Article PRIMARY KEY(id, sl) -- composite primary key
);

CREATE TABLE Subscription
(
-- Other columns
id INT NOT NULL, -- Same type as Article.id
sl VARCHAR(50) NOT NULL, -- Same type as Article.sl

CONSTRAINT FK_Subscription_Article FOREIGN KEY(id, sl)
REFERENCES Article(id, sl) -- Same order as Article PK
);

编辑

这里要考虑的一件事是,按照约定,名为 table.idtable.tableid 的列应该是唯一的,并且是表的主键。但是,由于表 Article 在主键中需要一个额外的列 sl,这意味着 id 不是唯一的。

关于sql - 如何在外键约束中使用两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29861764/

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