現象は業務上頻繁にありますが、あなたは複数のテーブルへの一括挿入データに必要がありますが、実装プロセスでは、おそらく一括挿入の失敗につながった紛争への唯一の鍵。
したがって、それは新しいもので、データが繰り返されているものの前に決意が必要です。
より一般的なアプローチは、既存のデータを見つけることであり、データ領域は、別の更新に存在するデータのセクションが存在しません。その後はデータのバッチ更新はありません。
ひどくコードの効率を減少させながら、この方法は、複雑なコード・ロジックをもたらします。
このビジネスシナリオに応じて、MySQLは独自の構文(挿入...重複キーの更新に)一括挿入を持ち、一意のキーデータを更新します
CREATE TABLEを`user_card`( ` id`のINT(10)符号なしNOT NULL AUTO_INCREMENTのCOMMENT ' 主键' 、 `uid`のINT(10)DEFAULT ' 0 ' COMMENT ' 用户ID ' 、 ` grade_id`のINT(10)DEFAULT ' 0 ' COMMENT ' 等级ID ' 、 `name`ののVARCHAR(255)DEFAULT ''COMMENT ' 名前' 、 ` マネー ` 進(10、2)DEFAULT ' 0.00 ' COMMENT ' バランス' 、 PRIMARY KEY ( `id`)、 UNIQUE KEY ` uid_gid`(uid` `、` grade_id`) - ビジネス上のユニークキー )ENGINE = MyISAMのAUTO_INCREMENT = 6。 DEFAULT CHARSET = UTF8。
上記のように、一括挿入データ記録経験が既に(UNIQUE KEY固有鍵に従って決意、テーブルステートメントを作成する)、自動更新既存のデータが存在します。
表は、(個別のインデックスまたは複合インデックスであってもよい)のユニークな複数のキーを有する場合、ユニークキー(UNIQUE KEY)競合のいずれかは、自動的にデータを更新します。
重複キーの更新構文のことで、あなたはフィールドが更新されていない、更新するフィールドを指定することができます。
SQL処理、追加のプログラムコード解析によるすべての操作が大幅にプログラムの実行の効率を向上させることができます。