Mysql 使用alter命令向复合主键添加外键显示错误1215
我使用了不同的数据库和表,但错误仍然存在 以下是三张表格: 表a:Mysql 使用alter命令向复合主键添加外键显示错误1215,mysql,Mysql,我使用了不同的数据库和表,但错误仍然存在 以下是三张表格: 表a: 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 affe
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的q的外键(“第一个”主键)
如果我尝试将另一个属性作为第二个主键的外键,即“w”,它将显示错误1215
alter table c add foreign key(t) references a(w);
错误1215(HY000):无法添加外键约束
为什么不将“t”作为“SECOND”主键(即“w”)的外键。
“我可以将它们中的任何一个作为第一个主键(q)的外键,但不能将它们设置为第二个主键(w)”
这可能会让人困惑,但当我在创建表a时仅通过将(q,w)更改为(w,q)来删除并再次创建所有表时,其他人可以引用w,但a不能引用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);
错误1215(HY000):无法添加外键约束
请帮帮我…我花了一整天的时间…但我不知道为什么会发生
InnoDB允许外键引用任何索引列或索引组
柱。但是,在引用的表中,必须有一个索引
其中引用的列列列为列表中的第一列
相同顺序
这是使用oracle®express®11eg软件使用alter命令创建的加密外键的图像。我在这里真正做的是,我制作了两张表格,分别是测试表和学生表。测试表由测试id、名称等组成,学生表又由id、名称等组成。在这两个表中,id使用命令“主键(id)”命名为主键,然后我编写命令“alter table test,add外键(id),references SUSTORS(id)”;“创建外键,不是很简单吗?
请编辑您的帖子,使sql语句真正可读…因此
更改表b添加外键(e)引用a(q)
实际上是有效的语法,尽管q
只是复合PK的一部分!我必须测试它,以确保我仍然不相信我的眼睛!仅在MySQL中!:))