问题:
我想在students表中创建外键ClassID,关联到class表中的主键ClassID上,要求级联更新删除,但创建外键过程中显示Cannot add foreign key constraint。
先看一下关联表结构,
出现该问题时要考虑一下几点:
分步来看:
查看单张表使用存储引擎的SQL语句:
结果如下:
可以看出classes表的引擎是MyISAM,想创建外键必须改为InnoDB
修改表引擎的SQL语句如下:
修改后结果如下:
由之前的表结构可看出,两个字段的类型均为int(16)
如需修改字段类型,可用SQL语句:
由上边表结构可以看出,classes表中ClassID的default值为0,而students表中ClassID的default值为NULL,因此需要修改字段的default。
修改字段default的SQL语句:
修改后结果为:
三步修改完成后再次尝试创建外键
*** 作成功,结果如下:
1.添加外键报错,外键无法建立无非这几种可能(一)确定外键上建立了索引,否则无法创建约束;
(二) 外键的引用类型和主表列类型不一致,比如主键是number的,外键是varchar2的;
(三)确定引用的主表列存在;
2.建表报错上提示此表已存在哦,drop之后再建表。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)