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

MySQL INSERT ....ON DUPLICATE UPDATE - Aggiunge uno all'autoincremento

INSERT ... ON DUPLICATE KEY UPDATE è descritto come un "inserimento in modalità mista" ai fini di AUTO_INCREMENT di InnoDB gestione. Gli inserti in modalità mista sono fondamentalmente quelli in cui il massimo numero di AUTO_INCREMENT richiesti i valori sono noti, ma l'importo che sarà effettivamente necessario non lo è.

Gli inserti in modalità mista vengono gestiti in modo speciale per impostazione predefinita, come descritto in Documenti MySQL :

Se stai usando InnoDB, le tue alternative sono:

  1. Evita INSERT ... ON DUPLICATE KEY UPDATE .
  2. Imposta innodb_autoinc_lock_mode parametro su 0 , per la modalità di blocco dell'incremento automatico "tradizionale", che garantisce che tutti INSERT le istruzioni assegneranno valori consecutivi per AUTO_INCREMENT colonne. Tuttavia, ciò si ottiene bloccando durante l'istruzione, quindi c'è una perdita di prestazioni associata a questa impostazione.
  3. (Consigliato) Ignora le lacune in AUTO_INCREMENT colonna.

Nota:AUTO_INCREMENT la gestione è completamente diversa in MyISAM, che non mostra questo comportamento.