2

私はこの声明を持っています:

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) 

それは何を言いますか?

4

5 に答える 5

2

エラーを読む

FOREIGN KEY (ref_links_id) REFERENCES links (link_id))

意味

`links`.link_id  (Parent)

`alias`.ref_links_id (Child)

親がいなければ子は存在しません。最初に、子テーブルに挿入する値の親テーブルを確認してください

于 2012-10-09T10:17:21.483 に答える
1

linksに 4 を挿入する場合は、テーブルに値 4 の link_id が必要ですalias.ref_links_id

links存在しない場合は、最初にテーブルに作成します。

于 2012-10-09T10:15:49.020 に答える
1

リンク テーブルに値 '4' がありません。リンク テーブルの値が「4」であることを確認してください。

于 2012-10-09T10:16:43.903 に答える
1
if((select count(*) from primaty_table where pk_id=4) > 0)
{
INSERT INTO `alias`( `alias`, `ref_links_id`) VALUES ("3334",4)
}
于 2012-10-09T10:20:25.453 に答える
0

ref_links_id4 はすでにテーブルに存在しますalias。外部キー制約に重複する値を挿入することはできません。

外部キーを削除したい場合は、

ALTER TABLE `alias` DROP FOREIGN KEY ref_links_id;  

次に、INSERT INTOエイリアス(エイリアス,ref_links_idを試してください) VALUES ("3334",4)

于 2012-10-09T10:20:50.787 に答える