我使用了不同的数据库和表,而不是我得到错误的表,但错误仍然存在......
以下是三张表:
表一:
create table a(q int,w int,primary key(q,w));//IMPORTANT:q then w
q 和 w 形成复合主键。
表 b:
create table b(e int,r int);
表3:
create table c(t int,y int);
alter table b add foreign key(e) references a(q);
Query OK, 0 rows affected (0.16 sec)
这个 alter 命令使 e 作为表 a('first' 主键)的 q 的外键。
如果我尝试将另一个属性作为第二个主键即“w”的外键,则会显示错误 1215
alter table c add foreign key(t) references a(w);
ERROR 1215 (HY000): 无法添加外键约束
为什么不将't'作为'SECOND'主键即'w'的外键。“我可以将它们中的任何一个作为第一个主键(q)的外键,但它们都不能作为第二个主键(w)”。
这可能会令人困惑,但是当我在创建表 a 时仅通过将 (q,w) 更改为 (w,q) 删除并再次创建所有它们时,w 可以被其他人引用,但不能被其他人引用。
create table a(q int,w int,primary key(w,q));
alter table c add foreign key(t) references a(w);
Query OK, 0 rows affected (0.16 sec)
alter table b add foreign key(e) references a(q);
ERROR 1215 (HY000): 无法添加外键约束
请帮助我..我花了一整天的时间..但我找不到它发生的原因...