sql >> Databasteknik >  >> RDS >> Mysql

INSERT IGNORE ökar den automatiska inkrementräknaren även om ingen post har lagts till?

Citerar från manualsidan för INSERT :

INSERT IGNORE syntax är bara ett sätt att undertrycka vissa felmeddelanden och det är användbart när du är medveten om att dessa fel kan inträffa och/eller vill hantera dem i ett senare skede. Bakom kulisserna har du fortfarande en vanlig insats, förutom att den misslyckas på grund av en bruten nyckel. MySQL behöver de faktiska radvärdena för att göra en infogning och AUTO_INCREMENT-räknaren kommer att öka enligt vanliga regler :

  1. Värdet för kolumnen är NULL.
  2. Värdet för kolumnen är inte angivet.
  3. Värdet för kolumnen är större än räknaren.

Så om du inte kan tänka om din logik (t.ex. testa om nyckelvärdena finns innan du gör insättningen), är det enda sättet att återställa räknaren är ÄNDRA TABELL :

ALTER TABLE t2 AUTO_INCREMENT = value;



  1. om Rad1 =Värde 1, Uppdatera andra rader

  2. PDO “Ofångat undantag 'PDOException' .. Kan inte köra frågor medan andra obuffrade frågor är aktiva. Överväg att använda PDOStatement::fetchAll()."

  3. Anslut på fjärr MySQL-databas via Python

  4. Heroku-migrering:typmodifierare är inte tillåten för typbytea