2013-07-26 37 views
0

假设,我有一个产品表。它有product_idproduct_name列。和 我有一个表product_purchase删除或更新取决列值

pr_pur_id product_id(FK) pur_quantity 
1   170   6 
2   190   6 
3   270   0 
4   70   1 
5   10   6 
6   20   6 

和我有一个product_sale表。该表具有pr_sale_id,product_id(FK)和sale_quantity列。

如果我想插入product_salePRODUCT_ID早已在product_purchase表中,product_purchase.pr_pur_id应该删除,如果product_purchase.pur_quantity是0。如果product_purchase.pur_quantity更多的则是0它会减少取决于product_sale.sale_quanity

如何执行更新或删除查询取决于product_purchase.pur_quantity列?

+0

您必须在服务器端(或客户端)代码中执行此操作。据我所知,没有办法迫使mySQL决定执行'UPDATE'或'DELETE'。 – DevlshOne

+0

您可以编写一个存储过程,检查值并基于此决定触发并更新或删除查询。 – Guanxi

+1

我不知道我理解你,但我怀疑'REPLACE'或'INSERT ... ON DUPLICATE KEY UPDATE'语句是你要找的。 – Barmar

回答

0

您是否考虑过简单地将该行与0可用计数保持一致?然后,如果您以后需要参考此信息,则它将作为历史记录。唯一真正的缺点是,您需要使用WHERE pur_quantity != 0这样的条款过滤查询中的那些行。

+0

,但额外的记录,其中pur_quanity = 0将永远不需要在下一次。为什么我会保持垃圾记录?当额外记录数量很大时,会不会影响我的数据库性能? – Imran

+0

他们是垃圾记录吗?你永远不会想知道你可用产品的历史吗?我们在谈论多少行会显着影响性能?即使有大量的记录,我想你可以通过良好的索引来克服这个问题。 – jpmc26

+0

好吧,先生,我明白,有点担心。如果你是对的。我的数据库应该改变。 product_sale表列应该包含pr_sale_id,product_pur_id(FK)和sale_quantity。(不是product_id)。哦,这个软件是一个大的鞋店。他们至少有5-10万个不同的产品。对于购买产品报告,我的想法是从销售表中收集。可能是那不是个好主意。谢谢。 – Imran