Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL INSERT ....ON DUPLICATE UPDATE - Fügt dem Autoinkrement eins hinzu

INSERT ... ON DUPLICATE KEY UPDATE wird im Sinne von AUTO_INCREMENT von InnoDB als "mixed-mode insert" beschrieben Handhabung. Mixed-Mode-Einfügungen sind im Grunde solche, bei denen das Maximum Anzahl erforderlicher AUTO_INCREMENT Werte bekannt, aber die Menge, die tatsächlich benötigt wird ist nicht.

Einfügungen im gemischten Modus werden standardmäßig speziell behandelt, wie im MySQL-Dokumentation :

Wenn Sie InnoDB verwenden, sind Ihre Alternativen:

  1. Vermeiden Sie INSERT ... ON DUPLICATE KEY UPDATE .
  2. Setzen Sie den innodb_autoinc_lock_mode Parameter auf 0 , für den "traditionellen" Autoinkrement-Sperrmodus, der garantiert, dass alle INSERT Anweisungen werden fortlaufende Werte für AUTO_INCREMENT zuweisen Säulen. Dies wird jedoch durch Sperren während der Anweisung erreicht, sodass mit dieser Einstellung ein Leistungsverlust verbunden ist.
  3. (Empfohlen) Ignorieren Sie die Lücken im AUTO_INCREMENT Spalte.

Hinweis:AUTO_INCREMENT Unter MyISAM, das dieses Verhalten nicht zeigt, ist die Handhabung völlig anders.