2012-05-07 33 views
1

我在我的winform應用程序這樣一個非常標準的MySQL查詢:的MySqlCommandBuilder鍵和外鍵

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

其中一個字段是一個外鍵。當我嘗試將記錄添加到我的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關鍵主表然後添加子表上的記錄