В вашем разъясняющем комментарии говорится, что вы заинтересованы в том, чтобы LAST_INSERT_ID () не давал неправильный результат, если произошел другой одновременный INSERT. Будьте уверены, что безопасно использовать LAST_INSERT_ID () независимо от других одновременных действий. LAST_INSERT_ID () возвращает только самый последний идентификатор, сгенерированный во время текущего сеанса.
Вы можете попробовать сами:
- Откройте два окна оболочки, запустите mysql
клиент в каждом и подключиться к
базы данных.
- Оболочка 1: ВСТАВЬТЕ в стол с
Ключ AUTO_INCREMENT.
- Оболочка 1: ВЫБЕРИТЕ LAST_INSERT_ID (),
смотрите результат.
- Оболочка 2: ВСТАВИТЬ в ту же таблицу.
- Оболочка 2: ВЫБРАТЬ LAST_INSERT_ID (),
см результат отличается от оболочки 1.
- Оболочка 1: ВЫБЕРИТЕ LAST_INSERT_ID ()
снова, увидеть повторение ранее
результат.
Если вы думаете об этом, это единственный способ, который имеет смысл. Все базы данных, которые поддерживают автоинкрементные ключевые механизмы, должны действовать таким образом. Если результат зависит от состояния гонки с другими клиентами, возможно, одновременно вставляющими, то не будет надежного способа получить последнее вставленное значение идентификатора в текущем сеансе.