这是整天困扰我的大脑的窘境。
Amazon Orders API由ListOrders和ListOrderItems组成。
ListOrders
提供AmazonOrderId
,然后在ListOrderItems
中用作输入,以提供有关订单的其他信息。
问题是AmazonOrderId
不是唯一标识符。这排除了向此列添加UNIQUE KEY
。
实际唯一标识符为OrderItemId
,ListOrderItems
与AmazonOrderId
一起检索。
现在我为UNIQUE INDEX
和AmazonOrderId
设置了OrderItemId
。
. . . .
UNIQUE KEY `unique_orders_index` (`AmazonOrderId`,`OrderItemId`)
问题是,当我从AmazonOrderId
输入ListOrders
行时,我需要AmazonOrderId
充当UNIQUE KEY
,并在插入时导致重复的错误消息
如果在AmazonOrderId
中双重传递,则允许重复ListOrders
行。
此时,我的唯一标识符OrderItemId
为NULL
(因为尚未从ListOrderItems
检索到它。
只有在使用特定ListOrderItems
致电AmazonOrderId
时才会知道同一OrderItemId
中是否有多个订单(或AmazonOrderId
),然后有条件地添加如果是这种情况,则需要额外的重复AmazonOrderId
。
我有什么方法可以解决此问题,以确保只有AmazonOrderId
时才会插入一个唯一的OrderItemId
行值(因为它必须位于ListOrders
{{1} } / call)INSERT
?
答案 0 :(得分:0)
AmazonOrderId可能是唯一的 - 按订单 - 但不在订单商品列表中。存储信息的常规方法是两个表,一个用于订单,另一个用于订单项。后者会有一个订单表的外键。
然后您将获得并将订单存储在其表中。之后,您检索订单商品并将其存储在表格中。
如果您认为必须将信息存储在单个表中,则将orderitemid默认为不会是值的值,例如-1或0.如果要插入订单项ID,只需检查该特殊值并进行更新而不是插入。