Mysql
 sql >> Baza danych >  >> RDS >> Mysql

INSERT IGNORE zwiększa licznik automatycznego przyrostu, nawet jeśli nie dodano żadnego rekordu?

Cytując ze strony instrukcji INSERT :

INSERT IGNORE składnia jest tylko sposobem na pominięcie niektórych komunikatów o błędach i jest pomocna, gdy masz świadomość, że te błędy mogą się zdarzyć i/lub chcesz zająć się nimi na późniejszym etapie. Za kulisami nadal masz zwykłą wstawkę, z wyjątkiem tego, że nie działa z powodu naruszonego klucza. MySQL potrzebuje rzeczywistych wartości wierszy do wstawienia, a licznik AUTO_INCREMENT będzie się zwiększał zgodnie z regularne reguły :

  1. Wartość kolumny to NULL.
  2. Wartość kolumny nie jest ustawiona.
  3. Wartość kolumny jest większa niż licznik.

Więc jeśli nie możesz przemyśleć swojej logiki (np. sprawdzić, czy wartości klucza istnieją przed wstawieniem), jedynym sposobem na resetowanie licznik to 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. Wyszukiwanie częściowych adresów IP przechowywanych jako liczby całkowite

  2. Relacja „wiele do dwóch”

  3. Co oznacza parametr TINYINT(parametr)?

  4. SQL wybierz tylko wiersze z maksymalną wartością w kolumnie

  5. MySQL ORDER BY rand(), nazwa ASC