• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何创建联合(复合)外键

mysql 搞代码 7年前 (2018-06-02) 145次浏览 已收录 0个评论

怎么创建联合(复合)外键
compound Foreign Key
不知道翻译成联合主键比较好 还是复合主键?

tpc-h的里面有一个表 字段说明是这样的
L_PARTKEY identifier Foreign key to P_PARTKEY, first part of the
  compound Foreign Key to (PS_PARTKEY,
  PS_SUPPKEY) with L_SUPPKEY

L_SUPPKEY Identifier Foreign key to S_SUPPKEY, second part of the
  compound Foreign Key to (PS_PARTKEY,PS_SUPPKEY) with L_PARTKEY

单个外键可以用references来建立
像这种的复合主键应该如何建立?求大神指教!

——解决方案——————–
compound Foreign Key
不知道翻译成联合主键比较好 还是复合主键?

都不对! 是复合键。
——解决方案——————–
compound Foreign Key
复合外键。
——解决方案——————–
复合外键只需要把引用的数据列放在一起,如果不是全部引用,需要前向(从前面的开始区),比如

mysql> create table A( a int ,b int ,primary key(a,b));
Query OK, 0 rows affected (0.45 sec)
复合主键
现在要想引用主键
mysql> create table B(c int ,foreign key(c) references A(b));
ERROR 1005 (HY000): Can’t create table ‘./test/b.frm’ (errno: 150)
这并非前向引用,错误
mysql> create table B(c int ,foreign key(c) references A(a));
Query OK, 0 rows affected (0.20 sec)
先引用a,没有任何问题
现在同时引用a,b这就是你说的复合外键
mysql> create table C(c int ,d int,foreign key(c,d) references A(a,b));
Query OK, 0 rows affected (0.26 sec)

没有任何问题
重点是记住前向引用,这与索引很像。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何创建联合(复合)外键

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址