繁体   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