Psa*_*Tak 2 sql sql-server foreign-key-relationship
我有两张桌子:
ArticleSubscription在Article表中,我有两列构成主键:id, sl。在Subscription表中我有一个外键“idsl”。
我使用这个约束:
constraint FK_idsl
foreign key (idsl) references CSS_SubscriptionGroup(id, sl)
Run Code Online (Sandbox Code Playgroud)
但是当我运行查询时,我收到此错误:
外键中引用列的数量与表 X 中引用列的数量不同
在文章表中,我有两个主键字段:id,sl。在订阅表中我有一个外键“idsl”
这种设计被破坏了 - 很明显,Article(id, sl)表中的复合主键已被破坏为表中的单个复合外键Subscription。这不是一个好主意。
相反,您需要更改表的设计,Subscription以包含与表类型相同的单独列id,sl然后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
);
Run Code Online (Sandbox Code Playgroud)
编辑
table.id这里需要考虑的一件事是,按照惯例,名为或 的列table.tableid应该是唯一的,并且是表的主键。但是,由于表需要主键中的Article附加列,因此这意味着它不是唯一的。slid
| 归档时间: |
|
| 查看次数: |
12522 次 |
| 最近记录: |