无法添加forrign键约束

时间:2016-01-14 09:56:52

标签: mysql

我的父表创建是

create table product31
    (prod_id varchar(10), prod_name varchar(25))
    CHARACTER SET utf8 COLLATE utf8_unicode_ci

我想要foreign key的子表是

create table product32
    (prod_id varchar(10), prod_value varchar(25),
    constraint foreign key (prod_id) 
        references product31(prod_id) on update cascade on delete cascade)
    CHARACTER SET utf8 COLLATE utf8_unicode_ci

通过运行第二个表脚本我得到了错误

  

无法添加外键约束

请帮帮我

1 个答案:

答案 0 :(得分:0)

引用字段应在第一个表中编入索引。所以你的create sysntax应该如下 -

CREATE TABLE product31 (prod_id VARCHAR(10),prod_name VARCHAR(25), KEY idx_prod_id(prod_id))CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE TABLE product32 (prod_id VARCHAR(10),prod_value VARCHAR(25), FOREIGN KEY pd (prod_id) REFERENCES product31(prod_id) ON UPDATE CASCADE ON DELETE CASCADE) CHARACTER SET utf8 COLLATE utf8_unicode_ci;

注意:如果将prod_id字段保留为主键,则无需创建单独的索引,因为主键已经被编入索引。