2012-02-28 11 views
1

IDがプライマリの6つのフィールドがあり、auto_incrementに設定されています。 DATEとFROM が一致しない場合は、新しい行を挿入したいです。私はREPLACE INTOまたはON DUPLICATE KEY UPDATEを考えていましたが、私が知っていることから、そのうちの1つを私のプライマリとして持つ必要がありますか?私はそれがどれだけうまくいっているか気にしません。2つのフィールドが一致しない場合のみMySQL INSERT

ID 

DATE   

STORE    

TOTAL   

NPS  

FROM 
+0

DATEやFROMのようなサウンドは、セカンダリキーです。この場合は、サーバー側のコードを使用してこれを処理できます。セカンダリキーは、すべてのFROMとDATEの組み合わせが一意であることを保証します。 – Zoidberg

答えて

4

必要なものは、DATEフィールドとFROMフィールドの両方で構成される一意のインデックスです。

ALTER TABLE table ADD UNIQUE INDEX(DATE, FROM);

その後、クエリのこのタイプを使用することができます

INSERT IGNORE INTO table (columns) VALUES (...)

をそれ以外の場合は重複キーエラーの原因となる任意のINSERTをスキップする文を無視します。