MySQL - 将主键从一个表插入另一个表(外键)

时间:2017-03-07 13:03:00

标签: mysql jsp

虽然这个问题已被提出,但它并没有真正适应我希望它如何为我工作,因为我一直收到错误。

我有一个表:Customer_orders,我将值插入:

<sql:update var="count">
    insert into customer_order (order_date,delivered ,shipping_date,customer_number ) 
    values ( SUBDATE(NOW(), INTERVAL 17 DAY), 1, SUBDATE(NOW(), INTERVAL 14 DAY), <%= session.getAttribute( "username" ) %> ); 
    </sql:update> 

现在这个customer_order有一个名为“订单号”的PRIMARY KEY,它自动递增

我想把这个order_number插入到一个表中,我尝试了类似的东西:

<sql:update var="count">
insert into order_item (item_code,value,order_number,quantity)
values( "<%= request.getParameter( "item_code" ) %>", "<%= request.getParameter( "item_price" ) %>",customer_order(order_number),1 );
</sql:update>

我甚至尝试了不同的方法来插入order_number但我无法让它工作。当我创建两个表时,order_number是第二个表中的一个外键,所以我认为它会抓取值本身,但没有。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你可以简单地从事务中的第一个查询中获取最后一个插入的id,然后根据需要将其插入另一个表中,所以我建议这种方法可以帮助你:

<sql:transaction dataSource="${snapshot}"  >
  <sql:update var="count">
       insert into customer_order (order_date,delivered ,shipping_date,customer_number ) 
       values ( SUBDATE(NOW(), INTERVAL 17 DAY), 1, SUBDATE(NOW(), INTERVAL 14 DAY), <%= session.getAttribute( "username" ) %> ); 
</sql:update> 
  <sql:query var="las_inserted_id" >
    SELECT LAST_INSERT_ID() as last_Id
  </sql:query >
  /*now you got the last inserted id so that you can simply insert it in your new query as you like*/
<sql:update var="count">
     insert into order_item (item_code,value,order_number,quantity)
     values( "<%= request.getParameter( "item_code" ) %>", "<%= request.getParameter( "item_price" ) %>",${ las_inserted_id.rows[0].last_Id },1 );
</sql:update>
</sql:transaction>

NB :请尽量避免在您的视图中使用sql逻辑代码!这样可以很容易地维护您的应用程序