1

XML からの読み取りと grails を使用したデータベースへの値の保存の投稿に続きます

その中で別の問題に直面しています。従業員IDは外部キーとして他のテーブルに関連付けられているため、以下に表示されるエラーを回避するためにgrailsコードに追加したいものを競合せずにデータベースに挿入する方法を考えています。

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Cannot add or update a child rowL a external key constraint fails.. ( CONSTRAINT 'EMPLOYEE_ID_HEADER' FOREIGN KEY ('EMPLOYEE_ID') REFERENCES 'employee_header'('employee_id'))

ここで、employee_id は列で、employee_header は、employee_id を外部キーとして含む別のテーブルです。

4

1 に答える 1

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})")

これで、エラーなしでデータが正常に挿入されます。

于 2012-10-12T12:39:27.203 に答える