我有一个名为:Orders(Id,FK_Customer_Id,Comments,PaymentMethod,DeliverTime)的表,用于存储在线零售商网站的订单信息,还有一个表:Order_Items(Id,FK_Order_Id,FK_Product_Id,Quantity) ,存储订单的详细信息。
一旦用户提交订单,我需要将信息保存到两个表中,但我不知道如何解决并发问题。
因为,我应首先插入Orders表,然后获取Order_Id并将此Id插入Order_Items表。我尝试使用" SELECT LAST_INSERT_ID()AS OrderId"。但是如果我插入订单并且在我可以获得Id之前,其他人插入另一个订单怎么办?然后上面的语句将获得新插入订单的ID,这不再是我的订单了。
请帮助我并让我知道如何操作,或者我是否以错误的方式设计订单/订单项目。
P.S。我使用angular 2作为前端,使用node.js创建API和MySQL作为DB。
提前谢谢。
答案 0 :(得分:0)
我会将操作分开。 这将防止任何意外的比赛"影响插入记录。
所以,首先,插入订单。
然后,第二,通过询问"插入id"确认插入查询是否成功。与mysql_insert_id()或类似于node.js的东西相似。
然后,第三,一旦您拥有该ID,您就可以安全地插入订单的详细信息。