|
Задача: получить идентификатор только что добавленной в таблицу записи. Необходимое условие: в таблице должно быть AUTO_INCREMENT поле. Решение (MySQL): SELECT LAST_INSERT_ID(); Решение (PHP/MySQL): mysql_insert_id(); Решение (MsSQL): SELECT @@IDENTITY AS ID; Замечания: Сбросить (поменять) значение Next Autoindex в MySQL: ALTER TABLE `table_name` AUTO_INCREMENT = 238; При выполнении INSERT запроса на добавление нескольких записей (insert into `table_name` (field1,…,fieldm) values (’value11′,…,’value1m’), …, (’valuen1′,…,’valuenm’);) MySQL в качестве LAST_INSERT_ID возвращает идентификатор первой вставленной записи, а не последней, как можно было бы предположить. В некоторых версиях MySQL был баг: при неуспешном выполнении команды INSERT IGNORE (если уникальный ключ уже существует и ничего не добавляется) LAST_INSERT_ID возвращает следующее доступное значение для авто-инкремента. Не использовать LAST_INSERT_ID, когда его надо использовать, нельзя. Вариант “быстренько пишем в базу и мгновенно делаем SELECT максимального значения авто-инкремента” ужасен и нестабилен. |
| След. > |
|---|


Саранск