1

適切な用語はわかりませんが、「バッチ挿入」とはどういう意味ですか..

INSERT INTO `table` (`column1`, `column2`, `column3`) VALUES 
("value1", "value2", "value3"),
("value4", "value5", "value6"),
("value7", "value8", "value9")

リソースを節約するために、1 つのクエリに複数の行を挿入しています。

重複レコードを取得しないように、このテーブルには複合キーが設定されています。問題は、重複レコードがある場合、「バッチ」全体を拒否するため、上記の例では、column1列に「value1」が既に存在する場合、3 つの行のいずれも挿入されないことです。

私たちは mysql_ 関数で PHP を使用しています (はい、私はそれらが非推奨になっていることを知っています。一度に 1 つの問題に対処しましょう)

だから私の質問は、一度に複数の行を挿入する方法はありますか?行が重複した場合、残りの行を「バッチ」に挿入しますか?

ご協力いただきありがとうございます。

4

2 に答える 2

3

ignoreキーワードを試してみてください

INSERT IGNORE INTO `table` ...

IGNORE キーワードを使用すると、INSERT ステートメントの実行中に発生したエラーは無視されます。たとえば、IGNORE を使用しない場合、テーブル内の既存の UNIQUE インデックスまたは PRIMARY KEY 値を複製する行は、重複キー エラーを引き起こし、ステートメントは中止されます。IGNORE を使用すると、行は挿入されませんが、エラーは発生しません。無視されたエラーは代わりに警告を生成する場合がありますが、重複キー エラーは生成しません。

于 2013-09-20T13:33:34.570 に答える