Вашият уточняващ коментар казва, че се интересувате да се уверите, че LAST_INSERT_ID() не дава грешен резултат, ако се случи друго едновременно INSERT. Бъдете сигурни, че е безопасно да използвате LAST_INSERT_ID() независимо от друга едновременна дейност. LAST_INSERT_ID() връща само последния идентификатор, генериран по време на текущата сесия.
Можете да опитате сами:
- Отворете два прозореца на обвивката, стартирайте mysqlclient във всеки и се свържете с базата данни.
- Обвивка 1:INSERT в таблица с ключ AUTO_INCREMENT.
- Обвивка 1:SELECT LAST_INSERT_ID(), вижте резултата.
- Обвивка 2:INSERT в същата таблица.
- Обвивка 2:SELECT LAST_INSERT_ID(),вижте резултата, различен от обвивка 1.
- Обвивка 1:SELECT LAST_INSERT_ID()отново, вижте повторение на по-ранен резултат.
Ако се замислите, това е единственият начин, който има смисъл. Всички бази данни, които поддържат механизми за автоматично увеличаване на ключовете, трябва да действат по този начин. Ако резултатът зависи от състояние на състезание с други клиенти, които евентуално INSERTING едновременно, тогава няма да има надежден начин да получите последната въведена стойност на идентификатора в текущата ви сесия.