2012-05-09 68 views
0

命令 - :如何避免重複的數據導入MySQL表?

order_id(PK) item  status order_no 
1    pant  0  100 
2    shirt  1  200 

產品展示:

prod_id(Fk) id(pk) price  quantity order_no status 
    1    1   10   2   100  0 
    1    2   20   3   100  0 
    2    3   15   1   200  1 

這是我的兩個表 - :爲了&產品。

什麼情況是將數據插入到產品表中,我的查詢首先檢查訂單表&的狀態,如果它是0,它會將數據添加到產品表中。

我的計劃,通過科雷運行job..so每次它只是檢查訂單狀態&如果是0, 再次增加相同的數據到產品表。

即我的產品表變成了這個樣子

prod_id(Fk) id(pk) price  quantity order_no status 
    1    1   10   2   100  0 
    1    2   20   3   100  0 
    2    3   15   1   200  1 
    1    4   10   2   100  0 
    1    5   20   3   100  0 

,我不想要的。我的id列是PK是自動遞增...... 所以我應該如何避免重複的數據導入產品表?

有什麼辦法,我們可以更新或替換相同的數據?

PLZ指導我..

回答

3

prod_id創建UNIQUE指數(或任何列決定該記錄將被更新,而不是插入),然後使用INSERT ... ON DUPLICATE KEY UPDATEREPLACE

+0

HI eggyal,因爲我維護這表示這些產品都是從國外訂單PROD_ID鍵我無法創建產品表唯一索引沒有。因此它可能包含與您可以檢查訂單號的示例相同的值。 1有2個產品。 – Prat

+0

@Prat:你怎麼確定是否要插入新記錄或更新現有的?它是由'order_no'嗎? 'order_no'和'prod_id'的組合?你的問題不清楚。 – eggyal

+0

訂單狀態爲0意味着數據不會被移動到oracle中,所以當order_status變爲1意味着數據移動到oracle中......但是發生的事情是,直到數據移動時,產品數據才被插入到我不想要的產品表中。 。 – Prat