Mysql外键约束的要求

不羁岁月 提交于 2019-11-27 18:54:57

1、父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2、数据表的存储引擎只能为InonoDB。
3、外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度可以不同。
4、外键列和参照列必须创建索引。如果外键列不存在索引的话,Mysql将自动创建索引。

编辑数据表的默认存储引擎
MYSQL配置文件my.ini

default-storage-engine=INNODB

验证外键列和参照列的数据类型应该相同的问题。

比如创建一张省份表和用户表,用户的身份外键引用省份表的id

create table province(
     id smallint unsigned not null primary key auto_increment,
     pname varchar(20) not null
);

show create table province// 查看表存储引擎

create table users(
 id smallint unsigned primary key auto_increment,
 username varchar(20) not null,
 pid bigint,
 foreign key(pid) references province(id)
);

这样运行会报MYSQL 150错误。即必须具有相同的数据类型。

mysql的主键会自动创建索引,如何验证呢?注意\G可以查看更好格式排版

show indexs from province\G;

推广

专业墙纸贴纸厨房用具装饰出售,本人网店经营,访问即是爱

博客对你有用记得访问下哦,增加下访问量,如有需要可以下单购买哦^_^。https://item.taobao.com/item.htm?id=570637716145

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!