在grails中插入数据作为外键约束

时间:2012-08-22 05:42:32

标签: grails

继续reading-from-XML-and-storing-the-values-in-database-using-grails

的帖子

我正面临另一个问题。由于employee id与其他表相关,因为我认为将数据插入数据库时​​没有冲突,我想在grails代码中添加以避免出现以下错误。

  

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:不能   添加或更新子行,外键约束失败..(CONSTRAINT'EMPLOYEE_ID_HEADER'   FOREIGN KEY('EMPLOYEE_ID')参考'employee_header'('employee_id'))

此处employee_id是一列,employee_header是一个单独的表,其中包含employee_id作为外键。

1 个答案:

答案 0 :(得分: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})")

现在,这会成功插入数据而不会出错。