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

INSERT IGNORE øger den automatiske stigningstæller, selvom der ikke er tilføjet nogen post?

Citerer fra manualsiden til INSERT :

INSERT IGNORE syntaks er blot en måde at undertrykke visse fejlmeddelelser, og det er nyttigt, når du er klar over, at disse fejl kan opstå og/eller ønsker at håndtere dem på et senere tidspunkt. Bag kulisserne har du stadig en almindelig indsats, bortset fra at den fejler på grund af en krænket toneart. MySQL har brug for de faktiske rækkeværdier for at lave en indsættelse, og AUTO_INCREMENT-tælleren vil stige i henhold til almindelige regler :

  1. Værdien for kolonnen er NULL.
  2. Værdien for kolonnen er ikke angivet.
  3. Værdien for kolonnen er større end tælleren.

Så medmindre du kan genoverveje din logik (f.eks. teste, om nøgleværdierne eksisterer, før du laver indsættelsen), er den eneste måde at nulstille tælleren er ALTER TABLE :

ALTER TABLE t2 AUTO_INCREMENT = value;



  1. Oracle trigger fejl ORA-04091

  2. MySQL SELECT LAST_INSERT_ID() for sammensat nøgle. Er det muligt?

  3. Hjælp til at beregne kompleks sum i hierarkisk datasæt

  4. Effektiv måde at indsætte dataramme fra R til SQL