0

2 つのフィールドにまたがる MYSQL データベース テーブルにインデックスがあります。PHP MDB2 MYSQL 拡張機能が提供する autoPrepare & executeMultiple を使用して INSERTS をバッチ処理します。ただし、インデックスに重複したヒットがある場合、エラーがスローされ、バッチ挿入が停止します。重複が試行された場合にエラーを無視するMYSQLコマンドであるINSERT IGNOREに相当するものを探しています。

バッチ挿入では、配列内のテーブル フィールドを指定し、フィールド タイプを指定してから、配列に入力するすべての値を指定できます。あなたは次のようなものになります:

$sth = $db->extended->autoPrepare($table_name, $table_fields,MDB2_AUTOQUERY_INSERT, null, $types);
$res = $db->extended->executeMultiple($sth, $table_values);

したがって、特定のクエリは送信されません。重複に対してエラーをスローするのではなく、エントリを無視するようにオプションを送信する必要があります。

4

1 に答える 1

0

MDB2でのバッチ挿入の使用をあきらめました。代わりに、ignoreで通常の挿入を使用しました:

INSERT IGNORE into TABLENAME (field1, field2) VALUES (1,2), (a,b) ...

インデックスはfield1とfield2に一緒にあります。IGNOREは、イン​​デックス値に対して重複した試行が行われた場合にエントリをスキップしますが、MDB2バッチコマンドとは異なり、IGNOREオプションを使用すると、繰り返しエントリのシナリオに遭遇した場合にクエリを続行できます。

于 2012-08-21T06:54:47.777 に答える