last_insert_id () возвращает правильный результат при записи из нескольких сеансов?

У меня есть таблица, в которой есть комбинация из 4 столбцов, которые будут действовать как уникальный ключ.

Вместо использования составного первичного ключа я хочу сохранить столбец идентификатора в качестве первичного ключа. Это поле находится в auto_increment. Вставка в базу данных осуществляется через интерфейс C. Когда строка вставлена, я хочу знать идентификатор, который был назначен. LAST_INSERT_ID () можно использовать для извлечения, но в таблице будет несколько сеансов. Будет ли LAST_INSERT_ID () возвращать правильное значение в этом случае?

Я прочитал этот пост: Гарантирована ли функция LAST_INSERT_ID () MySql? В нем говорится, что идентификатор первой вставленной строки возвращается при вставке нескольких строк.

Когда несколько сеансов записываются в одну и ту же таблицу, но один сеанс записывает только одну строку за раз, возможно ли получить правильное значение генерируемого идентификатора? Будет ли иметь значение уровень изоляции?

6 голосов | спросил Tush 3 Jpm1000000pmThu, 03 Jan 2013 14:32:21 +040013 2013, 14:32:21

1 ответ


12

Вот что написано в документации MySQL 5.5

  

Идентификатор, который был сгенерирован, поддерживается на сервере для каждого подключения . Это означает, что значение, возвращаемое функцией для данного клиента, является первым значением AUTO_INCREMENT, сгенерированным для самого последнего оператора, влияющим на столбец AUTO_INCREMENT этого клиента. Это значение не может быть затронуто другими клиентами, даже если они генерируют собственные значения AUTO_INCREMENT. . Это поведение гарантирует, что каждый клиент может получить свой собственный идентификатор, не заботясь о деятельности других клиентов, и без необходимости для блокировок или транзакций.

Если вы не попадете в другие оговорки, указанные в вопросе, на который вы ссылаетесь, функция last_insert_id() вернет вам то, что вы ожидаете, и не будут затронуты другими сеансами.

ответил Mat 3 Jpm1000000pmThu, 03 Jan 2013 14:53:02 +040013 2013, 14:53:02

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132