一个外键引用多个主键

时间:2018-02-15 04:44:49

标签: sql sql-server database performance

我有两个表,在这两个表的每一个中都有一个主键列,另一个表(表3)有一个外键,它引用了主键上面的两列。

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

注意:我不想创建一个新表,它是主键表的组合,并添加对新创建的表的引用

2 个答案:

答案 0 :(得分:2)

正如 Erwin Brandstetter 所述here

FK约束规则

要回答标题和文字末尾的问题:

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

那是不可能的。

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

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

,单个PK或FK 可以跨越多列。
并且FK可以引用目标中任何明确定义的唯一(一组)列,而不仅仅是PK。 The manual:

  

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

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

基本建议:

答案 1 :(得分:-1)

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

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

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