MySQL插入语句因外键约束而失败

时间:2012-10-09 10:13:53

标签: php mysql

我有这样的声明:

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) 

这是什么意思?

5 个答案:

答案 0 :(得分:1)

如果您要在links中插入4,则需要在alias.ref_links_id表格中设置值为4的link_id。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

阅读错误

FOREIGN KEY (ref_links_id) REFERENCES links (link_id))

意味着

`links`.link_id  (Parent)

`alias`.ref_links_id (Child)

没有父母就没有孩子。所以首先检查父表中您要插入子表的值

答案 3 :(得分:1)

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

答案 4 :(得分:0)

ref_links_id 4将存在于表alias中。您不能为外键约束插入重复值。

如果要删除外键,

ALTER TABLE `alias` DROP FOREIGN KEY ref_links_id;  

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