2013-07-26 41 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