Това е пример за автоматично заключване на инкремент в InnoDB:Тъй като изпълнявате 2 оператора едновременно в една и съща сесия:автоматичното включване се получава от първата заявка, а генерирането на стойност за автоматично увеличение не се преплита между операторите - това е цялата работа на транзакцията.
Това винаги ще се случва по замисъл:Ако не беше така, начинът, по който работят транзакциите в InnoDB, добре, нямаше да работи. Мащабируемостта при натоварвания от типа OLTP би била ужасна, тъй като всяка вмъкнала би трябвало да изчака всяка друга вмъкване да завърши, да бъде ангажирана или по-лошо – да се върне обратно.
Т.е.:Ако първото ви вмъкване работи 5 пъти по-дълго от второто и се провали и бъде върнато назад, второто все още завършва и е заето. В противен случай ще трябва да изчакате ea. заявката да бъде завършена след другата.
Ако имате нужда от последователни и абсолютно уникални идентификационни номера, изтеглете ги от друг източник. Колоните на AutoInc просто гарантират уникална стойност - не непременно монопоследователност - това е точка на сериализация и пречка.
Един начин за заобикаляне на това, ако се изисква друго:
задайте innodb_autoinc_lock_mode = 0
във вашия my.cnf/mysql.ini
Описание на автоматично заключване на включване в InnoDB и опции