sql >> Databáze >  >> RDS >> Mysql

INSERT IGNORE zvyšuje automatické počítadlo přírůstků, i když není přidán žádný záznam?

Citace z stránky s příručkou pro INSERT :

INSERT IGNORE syntaxe je jen způsob, jak potlačit určité chybové zprávy, a je užitečná, když si uvědomujete, že k těmto chybám může dojít, a/nebo je chcete ošetřit v pozdější fázi. V zákulisí máte stále běžnou vložku, kromě toho, že selhává kvůli porušenému klíči. MySQL potřebuje skutečné hodnoty řádků k vložení a počítadlo AUTO_INCREMENT se bude zvyšovat podle běžná pravidla :

  1. Hodnota sloupce je NULL.
  2. Hodnota pro sloupec není nastavena.
  3. Hodnota pro sloupec je větší než počítadlo.

Pokud tedy nedokážete přehodnotit svou logiku (např. před vložením otestovat, zda klíčové hodnoty existují), jediný způsob, jak resetovat počítadlo je ALTER TABLE :

ALTER TABLE t2 AUTO_INCREMENT = value;



  1. Nelze načíst data obrázku z tabulky a zobrazit obrázek

  2. PHP/Smarty Nested pole z DB

  3. @GeneratedValue polymorfní abstraktní supertřída přes MySQL

  4. Jak použít XML k vytvoření objektu OCI-Lob?