Когда я делаю одну строку INSERTв таблице, в которой есть AUTO_INCREMENTстолбец, я хотел бы использовать LAST_INSERT_ID()функцию для возврата нового AUTO_INCREMENTзначения ed, сохраненного для этой строки.
Поскольку многие разработчики и администраторы Microsoft SQL Server, без сомнения, знают, что эквивалентная функциональность в SQL Server ( SCOPE_IDENTITYи @@IDENTITY) не обошлась без проблем .
Я знаю состояние документов MySQL:
Сгенерированный идентификатор поддерживается на сервере для каждого подключения . Это означает, что значение, возвращаемое функцией данному клиенту, является первым
AUTO_INCREMENTзначением, сгенерированным для самого последнего оператора, влияющего наAUTO_INCREMENTстолбец этим клиентом . На это значение не могут повлиять другие клиенты, даже если они генерируютAUTO_INCREMENTсобственные значения. Такое поведение гарантирует, что каждый клиент может получить свой собственный идентификатор, не заботясь об активности других клиентов и не нуждаясь в блокировках или транзакциях.
и даже зайти так далеко, чтобы сказать:
Использование столбцов
LAST_INSERT_ID()иAUTO_INCREMENTстолбцов одновременно от нескольких клиентов вполне допустимо.
Существуют ли какие-либо известные риски или сценарии, которые могут привести LAST_INSERT_ID()к неправильному возвращению значения?
Я использую MySQL 5.5 на CentOS 5.5 x64 и Fedora 16 x64 и движок InnoDB.