在另一个SQL表中更改后,从SQL表中删除数据

时间:2015-03-29 17:50:48

标签: python sql sqlite

我有三个用于管理库存水平的表格 - ProductProductGenderProductType。我还有一个名为OrderItem的表,用于定义从数据库中订购的内容。

在我的程序中将值插入OrderItem表后,它会识别用户将金额插入字段后要订购的数量。

我的问题是 - 如何从表ProductType中减去库存量中的库存量?我知道我需要某种形式的DELETE陈述,但我不确定如何制作充分的陈述。

2 个答案:

答案 0 :(得分:1)

您可能需要UPDATE而不是DELETE。话虽这么说,我建议在接受订单后更新股票。我认为反过来更易于管理:更新库存,如果有足够的商品,则只接受订单

类似的东西:

--> client place an order for 20 item id XXXX:

UPDATE ProductType SET amount = amount - 20
 WHERE amount >= 20 AND item_id = 'XXXX';
 ^^^^^^^^^^^^^^^^^^
Please note that "guard" clause

该语句将更新0或1行。 1行表示“ok,stock updated”。 0表示“库存中没有足够的物品”。这在多用户环境中尤其重要,在这种环境中,您可以为同一项目同时更新库存。

之后:

--> If 1 row updated

INSERT INTO OrderItem(..., amount) VALUES (....., 20);

最后,在现实世界的应用程序中,您需要在库存更新后出现意外故障时将所有这些语句包装在事务中。

答案 1 :(得分:0)

我不知道你在想什么。假设

如果表ProductType --> type1 amount

然后在OrderItem的{​​{1}}项中插入type1项。因此,假设您必须decrease来自ProductType

n金额插入OrderItem

您可以在这里使用UPDATE

UPDATE OrderItem SET column_name = column_name - n WHERE ...

<强>更新

更新库存,只有在有足够的物品时才接受订单,这是良好的流程步骤。

希望这有帮助