sql >> Database >  >> RDS >> Mysql

INSERT IGNORE verhoogt de automatische ophogingsteller zelfs als er geen record is toegevoegd?

Citaat uit de handmatige pagina voor INSERT :

De INSERT IGNORE syntaxis is slechts een manier om bepaalde foutmeldingen te onderdrukken en het is handig als u zich ervan bewust bent dat die fouten kunnen optreden en/of ze in een later stadium wilt afhandelen. Achter de schermen heb je nog steeds een gewone insert, behalve dat deze faalt vanwege een geschonden sleutel. MySQL heeft de werkelijke rijwaarden nodig om een ​​invoeging te maken en de AUTO_INCREMENT-teller zal toenemen volgens gewone regels :

  1. De waarde voor de kolom is NULL.
  2. De waarde voor de kolom is niet ingesteld.
  3. De waarde voor de kolom is groter dan de teller.

Dus tenzij u uw logica kunt heroverwegen (bijvoorbeeld testen of de sleutelwaarden bestaan ​​voordat u de invoeging maakt), is de enige manier om te resetten de teller is ALTER TABLE :

ALTER TABLE t2 AUTO_INCREMENT = value;



  1. mysql minuten tot uren en minuten

  2. Draai MySQL-tabel met dynamische kolommen

  3. Een opgeslagen orakelprocedure in R uitvoeren met ROracle

  4. Variabele gebruiken in SQL LIKE-instructie