2012-01-11 15 views
0

私はMySQLデータベースに入っているほぼ5000のオブジェクトの配列を持っています。主キーの重複を無視する

この配列にはインデックス 'crn'があり、MySQLテーブルの対応する列が主キーです。

スクリプトの実行を停止するのではなく、重複した主キーを検出した場合、mysqlに入力をスキップするように指示する方法はありますか?

各行を挿入する前にテーブルをチェックすることができましたが、5000またはそれ以上のオブジェクトの間で1または2の重複が予想されるため、非常に高価になると思われます。

+0

どのようにあなたが最初にすべての重複する主キーを持つ行を挿入することができますを参照してください? – Acn

+0

@BigFatPig:それがポイントです。私はそれを挿入したくない。衝突した場合は無視する(つまり、その行の挿入をスキップする) – xbonez

+0

オブジェクトを挿入するにはどうすればよいですか?スクリプトのどの言語を使用していますか? – Fivell

答えて

6

利用INSERT IGNOREだけではなくINSERT

+0

重複した主キーと強制挿入を '無視 'するのでしょうか、それともこの挿入をスキップしますか? – xbonez

+0

重複が見つかった場合は、INSERT INTO table(value)VALUES(1)を実行してUPUPの値を更新することができます。 – Geoffrey

+1

これは挿入をスキップします – Geoffrey

1

@KingCrunchが述べたように、INSERTはあなたのためにそれを行うことができます無視します。 DUPLICATE KEY UPDATE

ON

あなたはしかし、重複について知る必要がある場合は、INSERTを検討する必要がありますが... http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html