1,父表和子表必须使用相同的存储引擎,而且禁止使用临时表.
2, 数据表的存储引擎只能为InnoDB.
3, 外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同
4, 外键列和参照列必须创建索引.如果外键列不存在索引的话,mysql将自动创建索引.
例如 以下创建外键的 表
CERATE TABLE provinces(
id SMALLINT(5) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL,
)
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
pid SMALLINT(5) UNSIGNED ,
FOREIGN KEY (pid) REFERENCES provinces (id)
)
user表中的 pid 就是外键,需要和子表的 provinces中的 id 字段配置一致,不然会报错
语法为 FOREIGN KEY (pid) REFERENCES provinces (id)