2017-03-22 23 views
0

で、親テーブルに存在しない場合は、私はこれらのような二つのテーブル持っている子行から行を追加します。今、私が持っている問題があればということ、であるMySQLがエラー1452

CREATE TABLE parentTable(
pID INT, 
ArtNr INT, 
Name VARCHAR(50), 
PRIMARY KEY(ID), 
UNIQUE KEY (ArtNr) 
); 

CREATE TABLE childTable(
cID  INT, 
ArtNr  INT, 
Name  VARCHAR(50), 
UNIQUE KEY (ArtNr), 
FOREIGN KEY (ArtNr) REFERENCES parentTable(ArtNr) ON UPDATE CASCADE ON DELETE CASCADE 
); 

1452 Cannot add or update a child row: a foreign key constraint fails (`sys`.`childTable`, CONSTRAINT `childTable_ibfk_1` FOREIGN KEY (`ArtNr`) REFERENCES `parentTable` (`ArtNr`) ON DELETE CASCADE ON UPDATE CASCADE) 

何を:私のparentTableに見つからないArtNrと私のchildTableにエントリがある、私は、このエラーメッセージが表示されますchildTableのエントリがparentTableに見つからない場合は、行を追加します。それは可能ですか?

+0

何が欲しいですか?あなたは外部キー制約を作成しました。そして今、それを避けようとしています。 – Devart

+0

いいえいいえ、足りない項目をparentTableに追加したいだけです – Alex

+0

答えを見てください(その2)。 – Devart

答えて

0

サーバー変数FOREIGN_KEY_CHECKSを使用して、外部キー値のチェックをオン/オフできます。例えば

SET FOREIGN_KEY_CHECKS=0; 

// ... 
// your script... 
// ... 

SET FOREIGN_KEY_CHECKS=1; 

詳細情報 - foreign_key_checks


あなたは、このクエリを使用して、不足しているエントリを見つけることができます -

SELECT c.* FROM child c 
LEFT JOIN parent p 
    ON p.id = c.id 
WHERE p.id IS NULL; 

そして、親テーブルにIDのこれらのセットを挿入します。 INSERT..SELECTの助けを借りてそれをしてください。

+0

ありがとうございますが、これは不足している項目を追加するのに役立ちません – Alex

+0

あなたの完全なスクリプトを表示してください。 – Devart

+0

ありがとう..このステートメントでは、不足しているエントリが見つかりました – Alex

関連する問題