Spec-Zone .ru
спецификации, руководства, описания, API

21.8.15.3. Как Получить Уникальный ID для Последней Вставленной Строки

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

Можно проверить из своих приложений C, было ли значение сохранено в AUTO_INCREMENT столбец, выполняя следующий код (который предполагает, что Вы проверили что оператор, за которым следуют). Это определяет, был ли запрос INSERT с AUTO_INCREMENT индексируйте:

if ((result = mysql_store_result(&mysql)) == 0 &&    mysql_field_count(&mysql) == 0 &&    mysql_insert_id(&mysql) != 0){    used_id = mysql_insert_id(&mysql);}

Когда новое AUTO_INCREMENT значение было сгенерировано, можно также получить его, выполняясь a SELECT LAST_INSERT_ID() оператор с mysql_query() и получение значения от набора результатов возвратилось оператором.

Вставляя многократные значения, последнее автоматически постепенно увеличенное значение возвращается.

Для LAST_INSERT_ID(), последний раз сгенерированный ID сохраняется в сервере на основе для каждого подключения. Это не изменяется другим клиентом. Это даже не изменяется, если Вы обновляете другого AUTO_INCREMENT столбец с неволшебным значением (то есть, значение, которое не является NULL и нет 0). Используя LAST_INSERT_ID() и AUTO_INCREMENT столбцы одновременно от многократных клиентов совершенно допустимы. Каждый клиент получит последний вставленный ID для последнего оператора тот выполняемый клиент.

Если Вы хотите использовать ID, который был сгенерирован для одной таблицы, и вставьте это во вторую таблицу, можно использовать SQL-операторы как это:

INSERT INTO foo (auto,text)    VALUES(NULL,'text');         # generate ID by inserting NULLINSERT INTO foo2 (id,text)    VALUES(LAST_INSERT_ID(),'text');  # use ID in second table

Отметьте это mysql_insert_id() возвращает значение, сохраненное в AUTO_INCREMENT столбец, сгенерировано ли то значение автоматически, храня NULL или 0 или был определен как явное значение. LAST_INSERT_ID() возвраты только автоматически сгенерированы AUTO_INCREMENT значения. Если Вы храните явное значение кроме NULL или 0, это не влияет на значение, возвращенное LAST_INSERT_ID().

Для получения дополнительной информации по получению последнего ID в AUTO_INCREMENT столбец: