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

尽管有人问过这个问题,但由于我不断收到错误,它并没有真正适应我希望它对我的工作方式。

我有一个表: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具有称为“订单号”的主键,该键会自动递增

我想使用这个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是第二个表中的外键,因此我认为它会自己获取值,但没有。

我究竟做错了什么?

回答:

您可以简单地从事务中的第一个查询中获取最后插入的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>

:请尽您所能避免视图中的sql逻辑代码!这样就可以轻松维护您的应用程序

以上是 MySQL-将主键从一个表插入到另一个表(外键) 的全部内容, 来源链接: utcz.com/qa/430763.html

回到顶部