Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Возвращает последнее автоматически сгенерированное значение, которое было вставлено в столбец AUTO_INCREMENT.
mysql> SELECT LAST_INSERT_ID(); -> 195Последний идентификатор, который был сгенерирован, поддерживается на сервере на основе соединений. Это означает, что значение, возвращаемое клиенту, соответствует последнему сгенерированному значению AUTO_INCREMENT в сеансе данного клиента. Оно никак не может быть затронуто другими клиентами, равно как не требует блокировок или транзакций.
Значение, возвращаемое LAST_INSERT_ID() не изменяется, если вы обновляете столбец AUTO_INCREMENT в строке не с помощью "магических" значений (то есть, не NULL и не 0).
Если вы вставляете много строк одним оператором, LAST_INSERT_ID() возвращает значение для первой вставленной строки. Цель этого состоит в том, чтобы облегчить воспроизведение того же оператора INSERT на другом сервере.
Если указан аргумент выражение, значение аргумента возвращается функцией и запоминается как следующее значение, которое LAST_INSERT_ID() вернет при следующем вызове. Это можно использовать для эмуляции последовательностей:
· Создать таблицу для хранения счетчика последовательности и инициализировать его:
mysql> CREATE TABLE sequence (id INT NOT NULL);mysql> INSERT INTO sequence VALUES(0);· Использовать таблицу для генерации последовательности чисел:
mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+l);mysql> SELECT LAST_INSERT_ID();Оператор UPDATE увеличивает счетчик последовательности и заставляет следующий вызов LAST_INSERT_ID() возвращать измененное значение.
Вы можете генерировать последовательности без вызова LAST_INSERT_ID(), но польза от ее применения заключается в том, что значение идентификатора поддерживается сервером как последнее автоматически сгенерированное значение.
Это обеспечивает безопасное использование в многопользовательской среде, поскольку множество клиентов могут отправлять операторы UPDATE и получать свои собственные значения последовательности через оператор SELECT (или mysql_insert_id()), никак не влияя и не подвергаясь влиянию других клиентов, для которых генерируются их собственные значения последовательности.
Дата публикования: 2014-10-20; Прочитано: 327 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!