mysql(autoindex)

Написано: Admin in без категории  on Print 

Задача: получить идентификатор только что добавленной в таблицу записи.
Необходимое условие: в таблице должно быть 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 максимального значения авто-инкремента” ужасен и нестабилен.