簡體   English   中英

有沒有辦法在表中沒有主鍵的情況下創建外鍵關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM