怎么创建联合(复合)外键
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)
没有任何问题
重点是记住前向引用,这与索引很像。