2012-10-09 35 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)