一括挿入レコード、重複レコードに遭遇した場合は自動更新

3616 ワード

<span style="font-family: 'Microsoft YaHei', Verdana, sans-serif,   ;"><strong>                  :</strong></span>

更新ごとにsqlを実行する性能が低い場合、ブロックも発生しやすい.
一括挿入時にプライマリ・キーまたは一意のインデックスが重複するという問題が発生する可能性があり、一括挿入全体が失敗する.
ON DUPLICATE KEY UPDATEのsqlを使用して、一括挿入とプライマリ・キーまたは一意インデックスの重複問題を解決します.
例を次に示します.
表の構造は次のとおりです.
create table mytable(
id int not null,
code char(6) not null,
description char(50) null,
number int not null,
name char(50) not null,
primary key id,
unique key uk_mytable_code (code));

一括挿入:
INSERT INTO mytable(id, code, description, number, name) 
VALUES (?,?,?,?,?),(?,?,?,?,?),(?,?,?,?,?)
ON DUPLICATE KEY UPDATE description = VALUES(description), number = VALUES(number)

//description= VALUES (description),number = VALUES (number)   values id id ( code code ) ,
  // :number=number + 1,number=number- 1
  // name, id( code) , name
  // , 1; , 2