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

Kiedy WSTAWIAM wiele wierszy do tabeli MySQL, czy identyfikatory będą za każdym razem zwiększane o 1?

Odpowiedź brzmi:cóż, to zależy.

W przypadku myisam odpowiedź brzmi zdecydowanie tak, ponieważ sekwencje myisam wstawiają żądania.

Jednak w przypadku innodb zachowanie jest konfigurowalne od wersji mysql 5.1. przed v5.1, odpowiedź dla InnoDB również brzmi tak, po czym zależy to od innodb_autoinc_lock_mode ustawienie. Więcej informacji można znaleźć w dokumentacji mysql dotyczącej konfiguracji InnoDB auto_increment .

Aby dać ci najważniejsze informacje, są 3 innodb_autoinc_lock_mode ustawienia:

  1. tradycyjne (0)
  2. następny (1) - domyślny
  3. przeplatany (2)

Dalsze luki mogą dotyczyć wartości auto_increment, jeśli transakcje zostały wycofane. Wkładkę zbiorczą można cofnąć tylko w całości.

AKTUALIZACJA: Jak opisano powyżej, otrzymasz scenariusz 1) lub 2) , jeśli używasz

  • silnik tabel myisam
  • lub innodb przed mysql v5.1
  • lub innodb z mysql v5.1 lub nowszym i innodb_autoinc_lock_mode to 0 lub 1

Nie ma sposobu, aby stwierdzić, który element zostanie wstawiony jako pierwszy.

Możesz otrzymać scenariusz 3) lub 4) jeśli używasz

  • innodb z innodb_autoinc_lock_mode 2

Ponownie, nie ma sposobu, aby powiedzieć, jak i dlaczego mysql miesza kolejność rekordów.

Tak więc, jeśli twoje pytanie dotyczy faktu, że wstawiasz 3 rekordy za pomocą funkcji bulk insert, a last_insert_id() zwraca wartość auto_increment tylko pierwszego wstawionego rekordu, a chcesz uzyskać identyfikatory pozostałych 2 rekordów przez proste dodawanie, oznacza to, że może być konieczne sprawdzenie konfiguracji mysql w oparciu o silnik tabel i używaną wersję mysql.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić wiersze tabeli z bazy danych (php)

  2. Oblicza różnicę między dwiema datami w PHP

  3. MySQL FULL JOIN nie działa, ale działa RIGHT i LEFT JOIN

  4. normalizowanie znaków akcentowanych w zapytaniach MySQL

  5. Laravel 5:Naruszenie ograniczenia integralności:1452 Nie można dodać lub zaktualizować wiersza podrzędnego:ograniczenie klucza obcego nie powiodło się