2012-05-07 13 views
1

は、私はこのような私のWinフォームアプリケーションではかなり標準のMySQLクエリを持っていますMySQLCommandBuilderと外部キー

SELECT * FROM tblTable WHERE tblTable.tableID = " & variable 

フィールドの1つは、外部キーです。私は私のDataGridViewにレコードを追加しようとすると、私はエラーを取得する:

Cannot add or update a child row: a foreign key constraint fails

はMySQLCommandBuilder外部キーを含む表でINSERT-コマンドを作ることができませんか?

+0

"標準的な"クエリを実行すると、SQLインジェクション攻撃が開かれます。文字列連結を使用して変数をSQLコマンドに入れないでください。 –

答えて

0

外部キーの制約は、このような動作(データベースの整合性のため)を防ぐためです。おそらく存在しない主キーによって別のテーブルを参照する値を挿入しようとしています。

外部キーの値をの既存ののプライマリキーに変更してみてください。

+0

私はdatagridviewから隠してしまったので、他のテーブルへの参照を持つフィールドに値を送信していないことがあります。別の方法があるかどうか、MySQLBuilderでその値を送信するかどうか、あるいはINSERTを手動で行う必要があるかどうかを知っていますか? – janlindso

0

あなたが挿入これで、レコードを強制することができますが、

SET FOREIGN_KEY_CHECKS = 0; 

your select statement; 

SET FOREIGN_KEY_CHECKS = 1; 

外部キーチェックをお勧めしませんが、テーブル間の矛盾を避けるためです、これを行うための正しい方法は次のとおりです。最初にforeingキーを挿入しますメインテーブルを開き、子テーブルにレコードを追加します