2012-10-09 30 views
0

我有这样的说法:MySQL的INSERT语句失败,外键约束

INSERT INTO `alias`(`alias`, `ref_links_id`) VALUES ("3334",4) 

而且我得到这个错误:

Cannot add or update a child row: a foreign key constraint fails 

(`bestr_main`.`alias`, CONSTRAINT `alias_ibfk_1` FOREIGN KEY (`ref_links_id`) 

REFERENCES `links` (`link_id`) ON DELETE CASCADE ON UPDATE CASCADE) 

别名表连接在被外键链接表。 插入记录时,为什么会出现此错误?

我现在看到。我试图按键之间的链接更改为另一个表,我得到这个:

1452 - Cannot add or update a child row: a foreign key constraint fails 

    (`bestr_main`.<result 2 when explaining filename '#sql-73c_38e0'>, CONSTRAINT 

`#sql-73c_38e0_ibfk_1` FOREIGN KEY (`ref_links_id`) REFERENCES `refs` (`ref_id`) 

ON DELETE CASCADE ON UPDATE C) 

是什么说什么?

+1

错误本身讲述的原因 – diEcho

+0

请,加这foriegn关键是在主键表可用的编缉,否则从表中删除foriegn密钥... – jainvikram444

+0

请开始从已引用的父表插入值,因为父表不存在可能导致上述错误的值。 – gks

回答

1

读取错误

FOREIGN KEY (ref_links_id) REFERENCES links (link_id)) 

手段

`links`.link_id (Parent) 

`alias`.ref_links_id (Child) 

,没有孩子没有父母存在。要为其插入子表

1

您需要与价值4 link_id在links表,如果你想插入4 alias.ref_links_id

如果它不存在,首先在links表中创建它。

1

链接表不具有值'4'。请检查链接表值,它的值为'4'。

1
if((select count(*) from primaty_table where pk_id=4) > 0) 
{ 
INSERT INTO `alias`(`alias`, `ref_links_id`) VALUES ("3334",4) 
} 
0

ref_links_id 4将已经值,以便首先检查父表的表alias存在。您不能为外键约束插入重复值。

如果你想删除的外键,

ALTER TABLE `alias` DROP FOREIGN KEY ref_links_id; 

然后尝试INSERT INTO别名(别名, ref_links_id ) VALUES ("3334",4)