[英]Is there any way to create foreign key relation without primary key in the table
我想知道,如果一個表沒有主鍵,是否可以在兩個表之間創建引用約束。
例如:
Table1
{
Column1(Unique Key)
Column2(Not Null)
Column3(Candidate key)
}
Table2
{
Column1(Primary Key)
Column2(Foreign Key) //Can it refer to any of the column in Table1
Column3
}
它可以引用表1中的任何列嗎
如果要為不是主鍵的另一列創建外鍵,則它必須是唯一的。 (列上的唯一鍵1)
但是,什么不阻止您將Table1的Column1做為主鍵?! 它已經是唯一鍵,並且Table1沒有主鍵...
它可以引用表1中的任何列嗎
我還沒有親自測試過它,也無法弄清楚它是如何工作的,但是,顯然,只要您有一個索引(列的任何一種:-! ),列就在第一位即可:
InnoDB表的外鍵定義必須滿足以下條件:
InnoDB允許外鍵引用任何索引列或列組。 但是,在引用表中,必須有一個索引,其中引用列以相同的順序列為第一列 。
InnoDB當前不支持具有用戶定義分區的表的外鍵。 這意味着沒有用戶划分的InnoDB表可以包含外鍵引用或外鍵引用的列。
InnoDB允許外鍵約束引用非唯一鍵 。 這是對標准SQL的InnoDB擴展。
但是,即使引擎允許,我也不建議使用非唯一索引(如Table1.Column2
中的Table1.Column2
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.