0

我有一个表叫: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,这已经不是我的订单了。

请帮助我,让我知道该怎么做,或者如果我以错误的方式设计订单/订单项。

PS我使用angular 2作为前端和node.js来创建APIs和MySQL作为数据库。

先感谢您。

4

1 回答 1

0

我会分开操作。这将防止插入记录时出现任何意外的“竞争”影响。

所以,首先,插入订单。

然后,其次,通过使用类似 mysql_insert_id() 或 node.js 等价物的任何内容询问“插入 id”来确认插入查询是否成功。

然后,第三,一旦你有了那个 id,你就可以安全地插入订单的详细信息。

于 2017-06-29T20:37:49.247 回答