繁体   English   中英

一个外键引用多个主键

[英]One foreign key references multiple primary keys

我有两个表,在这两个表中的每个表中都有一个主键列,而另一个表(表3)中有一个外键,该外键引用了那些在主键列上方的表。

现在,我想将记录插入到表3中(如果这两个主键表中的任何一个存在)。

注意 :我不想创建一个由主键表组成的新表,并添加对该新创建表的引用

正如Erwin Brandstetter 在这里所述

FK约束规则

要在标题和文本结尾处回答问题:

“我仍然想知道如何使用一个外键引用两个主键。”

这不可能。

  • 一个FOREIGN KEY约束只能指向一个表,而每个表只能有一个 PRIMARY KEY约束。

  • 或者,您可以在同一列上具有多个 FOREIGN KEY约束,分别引用一个 (不同)表的一个 PRIMARY KEY (非常有用。)

但是 ,单个PK或FK 可以跨越多列。
FK可以引用目标中任何显式定义的唯一(一组)列,而不仅仅是PK。 手册:

外键必须引用作为主键或形成唯一约束的列。

多列PK或UNIQUE约束只能由具有匹配列类型的多列FK约束引用。

基本建议:

insert into table3 (col1, col2 ...)
(select col1, col2 ... from table1
union
select col1, col2 ... from table2);

您可以选择放置where子句或将SQL拆分为2,而不是并集。

这是标准的ANSI SQL,适用于任何DBMS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM