sql >> Database teknologi >  >> RDS >> Mysql

MySQL INSERT ....ON DUPLICATE UPDATE - Tilføjer en til autoincrement

INDSÆT ... PÅ DUBLIKAT NØGLOPDATERING beskrives som en "mixed-mode insert" med henblik på InnoDB's AUTO_INCREMENT håndtering. Inserts i blandet tilstand er dybest set dem, hvor maksimum antal påkrævede AUTO_INCREMENT værdier er kendt, men den mængde, der faktisk er nødvendig er ikke.

Inserts i blandet tilstand bliver som standard håndteret specielt som beskrevet i MySQL-dokumenter :

Hvis du bruger InnoDB, er dine alternativer:

  1. Undgå INDSÆT ... PÅ DUBLIKAT NØGLOPDATERING .
  2. Indstil innodb_autoinc_lock_mode parameter til 0 , for "traditionel" autoincrement låsetilstand, som garanterer, at alle INSERT sætninger vil tildele fortløbende værdier for AUTO_INCREMENT kolonner. Dette opnås dog ved at låse under erklæringen, så der er et ydeevnetab forbundet med denne indstilling.
  3. (Anbefalet) Ignorer hullerne i AUTO_INCREMENT kolonne.

Bemærk:AUTO_INCREMENT håndtering er helt anderledes under MyISAM, som ikke udviser denne adfærd.



  1. Få tabel-id efter indsættelse med ColdFusion og MySQL

  2. MySQL:Tilføj begrænsning, hvis den ikke eksisterer

  3. H2 postgresql-tilstand virker ikke for mig

  4. Sådan finder du MySQL midlertidig tabellagringsmotor