2012-05-09 31 views
0

order-: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 

は、これらは私の2つのテーブル - です。

どうすれば製品テーブルにデータを挿入するのですか?私のクエリはまず、注文テーブル&のステータスをチェックして、製品テーブルにデータを追加します。

私のプログラムはCRONジョブを実行しています。つまり、注文ステータス&が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です... so Productテーブルに重複したデータが表示されないようにするにはどうすればよいですか?

同じデータを更新または置き換える方法はありますか?

プラザ

答えて

3

prod_idUNIQUEインデックスを作成します(またはレコードが更新ではなく、挿入すべきであると判断何列)...私を導いて、その後、INSERT ... ON DUPLICATE KEY UPDATEまたはREPLACEのいずれかを使用します。

+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

関連する問題