簡體   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