2012-08-22 33 views
1

繼續reading-from-XML-and-storing-the-values-in-database-using-grails將數據作爲外鍵約束插入grails中

上面臨着另一個問題。由於員工ID與其他表格有關,因此我認爲如何將數據插入數據庫而沒有衝突,我想在Grails代碼中添加以避免下面顯示的錯誤。

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:不能 添加或更新一個孩子rowL一個外鍵約束失敗。(約束「EMPLOYEE_ID_HEADER」 外鍵(「EMPLOYEE_ID」)參考「employee_header」 ('employee_id'))

此處employee_id是一列,employee_header是一個包含employee_id作爲外鍵的獨立表。

回答

1

最後我得到了答案,當你在數據庫中插入值時,相關的外鍵表會受到影響。所以爲了處理這種情況,我們必須首先插入與外鍵相關的表格,然後我們需要準確添加表格。

對於參考,在第一我給了這樣

sql.executeInsert("insert into order_item (order_id,product_id,
order_item_seq_id) values (${order_id},${product_id},${order_item_seq_id})")

sql.executeInsert("insert into product(product_id) values(${product_id})")

該第一刀片的order_item表則外鍵約束表product碼,所以數據沒有插入。所以,正確的代碼是

sql.executeInsert("insert into order_header(order_id) values(${order_id})") sql.executeInsert("insert into product(product_id) values(${product_id})") sql.executeInsert("insert into order_item (order_id,product_id,
order_item_seq_id) values (${order_id},${product_id},${order_item_seq_id})")

現在這個成功插入數據沒有錯誤。