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

Извличане на последните вмъкнати идентификатори за няколко реда

Извикването на last_insert_id() ви дава идентификатора на ПЪРВИЯ ред, вмъкнат в последната партида. Всички останали вмъкнати са гарантирано последователни.

Освен ако не правите нещо много странно, това ви позволява да изчислите идентификатора на всеки ред достатъчно лесно.

Всъщност поведението варира в 5.1 в зависимост от настройката на параметъра на режима за автоматично увеличаване на innodb; това не трябва да има значение. Докато не го промените от стандартното, ще видите очакваното поведение.

Има случайни случаи, в които това не прави това, което очаквате и не е полезно - като например ако направите АКТУАЛИЗИРАНЕ НА ДУБЛИКАТ КЛЮЧ или ИГНОРИРАНЕ НА ВМЕСТЕ. В тези случаи ще трябва да направите нещо друго, за да изчислите идентификаторите на всеки ред.

Но за обикновена партида INSERT с ванилия, без посочени стойности за колоната за автоматично включване, е лесно.

Пълно описание на това как автоматичните инкременти обработено в innodb е тук



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Няма резултати от заявка за модел [App\Products] Laravel

  2. laravel errno 150 ограничението за външен ключ е неправилно формирано

  3. Трябва ли да използвам един голям оператор SQL Select или няколко малки?

  4. MySQL InnoDB ограничение не работи

  5. Javascript библиотеки, които позволяват SQL-подобни заявки към JSON данни?