Mysql
 sql >> база данни >  >> RDS >> Mysql

INSERT IGNORE увеличава брояча на автоматично нарастване, дори да не е добавен запис?

Цитирам от страницата с ръководство за INSERT :

INSERT IGNORE синтаксисът е просто начин за потискане на определени съобщения за грешка и е полезно, когато сте наясно, че тези грешки могат да се случат и/или искате да ги обработите на по-късен етап. Зад кулисите все още имате редовно вмъкване, с изключение на това, че се проваля поради нарушен ключ. MySQL се нуждае от действителните стойности на реда, за да направи вмъкване и броячът AUTO_INCREMENT ще се увеличи според обикновени правила :

  1. Стойността за колоната е NULL.
  2. Стойността за колоната не е зададена.
  3. Стойността за колоната е по-голяма от брояча.

Така че освен ако не можете да преосмислите логиката си (напр. да тествате дали ключовите стойности съществуват, преди да направите вмъкването), единственият начин за нулиране броячът е ALTER TABLE :

ALTER TABLE t2 AUTO_INCREMENT = value;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Влизане на потребител с една заявка и парола за всеки потребител

  2. Прочетете тип данни Mediumblob от MYSQL в C#

  3. Възможно ли е да прехвърлите DECIMAL на DOUBLE в MySQL?

  4. MySQL топ 2 записа на група

  5. сравняване на дати по месец и година в mysql