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

Когато ВМЕСЯ няколко реда в MySQL таблица, идентификаторите ще се увеличават ли с 1 всеки път?

Отговорът е:е, зависи.

В случай на myisam отговорът е категорично да, тъй като последователностите на myisam вмъкват заявки.

В случай на innodb, обаче, поведението е конфигурируемо от mysql v5.1. преди v5.1, тогава отговорът за InnoDB също е да, след това зависи от innodb_autoinc_lock_mode настройка. Вижте документацията на mysql за конфигурацията на InnoDB auto_increment за подробности .

За да ви дадем най-важните моменти, има 3 innodb_autoinc_lock_mode настройки:

  1. традиционен (0)
  2. последователно (1) - по подразбиране
  3. преплетени (2)

Допълнителни пропуски могат да бъдат опит в стойността на auto_increment, ако транзакцията е била върната назад. Обемната вложка може да бъде върната само като цяло.

АКТУАЛИЗИРАНЕ: Както е описано по-горе, ще получите сценарий 1) или 2) , ако използвате

  • myisam table engine
  • или innodb преди mysql v5.1
  • или innodb с mysql v5.1 или по-нова и innodb_autoinc_lock_mode е 0 или 1

Няма начин да се разбере кое се вмъква първо.

Може да получите сценарий 3) или 4) ако използвате

  • innodb с innodb_autoinc_lock_mode 2

Отново няма начин да се каже как и защо mysql смесва реда на записите.

Така че, ако въпросът ви е свързан с факта, че вмъквате 3 записа с групово вмъкване и last_insert_id() връща стойността на auto_increment само на първия вмъкнат запис и искате да получите идентификаторите на другите 2 записа чрез просто добавяне е, че вие може да се наложи да проверите конфигурацията на mysql въз основа на използваната машина за таблица и версията на 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. MySQL:Не можете да посочите целева таблица „задачи“ за актуализиране в клауза FROM

  2. Променете динамично името на колоната в PDO израза

  3. Как да получите данни за последните 12 месеца в MySQL

  4. mysql_upgrade неуспешно - innodb таблици не съществуват?

  5. Мога ли да използвам база данни MySQL с приложение на App Engine