0

INNODBForeign Keysを使用してすべてのテーブルが設定されたデータベースを構築しました。ここで、1 つのテーブルを変更し、別のテーブルを参照する新しい列を追加する必要があります。私のクエリは次のとおりです。

ALTER TABLE test ADD newcol INT NOT NULL;

ALTER TABLE test ADD CONSTRAINT fk_test
FOREIGN KEY (newcol) 
REFERENCES othertable(id);

次のエラーが表示されます。

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

他のすべてのテーブルにはデータが含まれていますが、testテーブルを削除して外部キーで作成すると機能することがわかっています。テストテーブルをドロップすると、多くのレコードが削除されるため、データをコピーして再挿入することを避けたい.

外部キーを介して新しい列を追加する方法を教えてもらえますか?

4

1 に答える 1

1

このエラーメッセージは、列newcolに存在しない値が含まれていることを意味しothertable idます。の列を追加することにより、その列のINT NOT NULLすべての初期値をに設定します0。のIDがない場合0othertable、キーの不一致があります

このクエリを試してください:

SELECT  newcol 
FROM    test
WHERE   newcol NOT IN (
    SELECT  id
    FROM    othertable
)

結果が返される場合はnewcol、FKの制限に違反する重要な値があります

于 2013-02-10T01:25:40.380 に答える