Подтвердить что ты не робот

MySQL LAST_INSERT_ID(), используемый с несколькими записями. Инструкция INSERT

Если я вставляю несколько записей с циклом, который выполняет одну запись, последний возвращаемый идентификатор возвращается, как и ожидалось, последним. Но если я делаю инструкцию записи нескольких записей:

INSERT INTO people (name,age)
VALUES ('William',25), ('Bart',15), ('Mary',12);

Скажем, три из них - это первые записи, вставленные в таблицу. После инструкции insert я ожидал, что последний идентификатор вставки вернет 3, но он вернул 1. Первый идентификатор вставки для рассматриваемого оператора.

Так может кто-то, пожалуйста, подтвердите, является ли это обычным поведением LAST_INSERT_ID() в контексте нескольких записей инструкций INSERT. Поэтому я могу создать свой код на нем.

4b9b3361

Ответ 1

Да. Это поведение last_insert_id() задокументировано в документах MySQL:

Важно
Если вы вставляете несколько строк, используя один оператор INSERT, last_insert_id() возвращает значение, сгенерированное только для первой вставленной строки. Причиной этого является возможность легко воспроизвести тот же оператор INSERT на другом сервере.

Ответ 2

Это поведение упоминается на странице man для MySQL. Это в комментариях, но не оспаривается, поэтому я предполагаю, что это ожидаемое поведение.