# Главная
# О библиотеке

# Выбор дистрибутива
преимущества Linux/UNIX | основные дистрибутивы | серверный Linux | BSD | LiveCDs | прочее

# Установка и удаление программ
общие вопросы | каталоги софта | специальные случаи

# Настройка и работа
установка, загрузчики | настройка Linux | консоль | файловые системы | процессы | шеллы, русификация, коммандеры | виртуальные машины, эмуляторы

# X Window и оконные менеджеры
настройка X Window | GNOME | KDE | IceWM и др.

# Работа с текстами
редакторы | офис | шрифты, кодировки и русификация | преобразования текстовых файлов | LaTeX, SGML и др. | словари

# Графика
GIMP | фото | обработка изображений | форматы графических файлов

# Сети, администрирование
общие вопросы | Dialup & PPP | брандмауэры | маршрутизация | работа в Windows-сетях | веб-серверы | Apache | прокси-серверы | сетевая печать | прочее

# Программирование
GCC & GNU make | программирование в UNIX | графические библиотеки | Tcl | Perl | PHP | Java & C# | СУБД | CVS | прочее

# Ядро
# Мультимедиа
# Интернет
# Почта
# Безопасность
# Железо
# Разное

# Linux HowTo (как сделать)
# Книги и руководства
# Материалы на английском языке


MySQL The World's Most Popular Open Source Database # Online shop | Site map |  
CompanyProductsSupport & ConsultingTraining & CertificationDownloadsDocumentation
  BooksArticlesMailing ListsPresentationsOther Sites  
Search the MySQL manual:
MySQL Manual
  • 8 Интерфейсы для MySQL
    • 8.4 Интерфейс C для MySQL
      • 8.4.3 Описание функций интерфейса C
        • 8.4.3.1 mysql_affected_rows()
        • 8.4.3.6 mysql_change_user()
        • 8.4.3.11 mysql_character_set_name()
        • 8.4.3.15 mysql_close()
        • 8.4.3.19 mysql_connect()
        • 8.4.3.23 mysql_create_db()
        • 8.4.3.28 mysql_data_seek()
        • 8.4.3.32 mysql_debug()
        • 8.4.3.37 mysql_drop_db()
        • 8.4.3.42 mysql_dump_debug_info()
        • 8.4.3.46 mysql_eof()
        • 8.4.3.51 mysql_errno()
        • 8.4.3.55 mysql_error()
        • 8.4.3.59 mysql_escape_string()
        • 8.4.3.60 mysql_fetch_field()
        • 8.4.3.65 mysql_fetch_field_direct()
        • 8.4.3.70 mysql_fetch_fields()
        • 8.4.3.75 mysql_fetch_lengths()
        • 8.4.3.80 mysql_fetch_row()
        • 8.4.3.85 mysql_field_count()
        • 8.4.3.90 mysql_field_seek()
        • 8.4.3.94 mysql_field_tell()
        • 8.4.3.98 mysql_free_result()
        • 8.4.3.102 mysql_get_client_info()
        • 8.4.3.106 mysql_get_host_info()
        • 8.4.3.110 mysql_get_proto_info()
        • 8.4.3.114 mysql_get_server_info()
        • 8.4.3.118 mysql_info()
        • 8.4.3.122 mysql_init()
        • 8.4.3.126 mysql_insert_id()
        • 8.4.3.130 mysql_kill()
        • 8.4.3.134 mysql_list_dbs()
        • 8.4.3.138 mysql_list_fields()
        • 8.4.3.142 mysql_list_processes()
        • 8.4.3.146 mysql_list_tables()
        • 8.4.3.150 mysql_num_fields()
        • 8.4.3.155 mysql_num_rows()
        • 8.4.3.159 mysql_options()
        • 8.4.3.163 mysql_ping()
        • 8.4.3.167 mysql_query()
        • 8.4.3.171 mysql_real_connect()
        • 8.4.3.176 mysql_real_escape_string()
        • 8.4.3.181 mysql_real_query()
        • 8.4.3.185 mysql_reload()
        • 8.4.3.189 mysql_row_seek()
        • 8.4.3.193 mysql_row_tell()
        • 8.4.3.197 mysql_select_db()
        • 8.4.3.201 mysql_shutdown()
        • 8.4.3.205 mysql_stat()
        • 8.4.3.209 mysql_store_result()
        • 8.4.3.213 mysql_thread_id()
        • 8.4.3.217 mysql_use_result()

Buy this Reference Manual in softcover from Barnes & Noble!

MySQL Reference Manual
Previous / Next / Up / Table of Contents

8.4.3.126 mysql_insert_id()

my_ulonglong mysql_insert_id(MYSQL *mysql)

8.4.3.127 Описание

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

Следует учитывать, что функция mysql_insert_id() возвращает 0, если предыдущий запрос не сформировал величину AUTO_INCREMENT. Если необходимо сохранить эту величину в дальнейшем, то следует позаботиться о вызове функции mysql_insert_id() немедленно после запроса, который создает указанную величину.

Функция mysql_insert_id() обновляется после команд INSERT и UPDATE, которые генерируют величину AUTO_INCREMENT или устанавливают величину столбца в значение LAST_INSERT_ID(expr). See section 6.3.6.2 Разные функции.

Следует также иметь в виду, что величина SQL-функции LAST_INSERT_ID() всегда содержит самое последнее сгенерированное значение AUTO_INCREMENT и не обновляется между запросами, так как величина этой функции сохраняется сервером.

8.4.3.128 Возвращаемые значения

Величина поля AUTO_INCREMENT, обновленного предыдущим запросом. Возвращает нуль, если перед этим не было запроса в данном соединении или если данный запрос не обновил величину AUTO_INCREMENT.

8.4.3.129 Ошибки

Нет.

User Comments

Posted by Meir Michanie on Thursday August 22 2002, @2:20am[Delete] [Edit]

could someone add an example?

Posted by Juan Londono on Thursday December 19 2002, @3:33pm[Delete] [Edit]

For an example, just follow this link http://www.mysql.com/doc/en/Getting_unique_ID.html

Posted by Dirk Hemelings on Wednesday December 18 2002, @5:27pm[Delete] [Edit]

A PHP example:

//This include opens de database
include '../../includes/db.php';

//Insert in first table
$result = mysql_query("INSERT INTO tblQuestions
(questionName)
VALUES ('$questionName')",$db);

//Insert in second table with ID of previous
insert
$result = mysql_query("INSERT INTO
tblQuestions_lng
(questionID,languageID,questionText)
VALUES (LAST_INSERT_ID
(),'$languageID','$questionText')",$db);

//Close database connection
mysql_close($db);

Posted by Mike Dierken on Friday November 15 2002, @2:00pm[Delete] [Edit]

What happens if another query that creates a row is
executed between the INSERT that creates the row
and the INSERT that uses LAST_INSERT_ID() ?

Is the LAST_INSERT_ID() relative only to the current
connection
or something? or is this situation a problem? and if
so, is there a solution?

Posted by Philippe A on Saturday February 1 2003, @8:01am[Delete] [Edit]

"The most recently generated ID is maintained in the server on a per-connection basis. It will not be changed by another client. It will not even be changed if you update another AUTO_INCREMENT column with a non-magic value (that is, a value that is not NULL and not 0). "

http://www.mysql.com/doc/en/Getting_unique_ID.html

Posted by [name withheld] on Thursday February 6 2003, @7:57am[Delete] [Edit]

mysql_insert_id(...) does not seem to work after an INSERT DELAYED. This is reasonable, as INSERT DELAYED does not block until the an autoincremented ID has been created (from a row insertion).

Add your own comment.

Top / Previous / Next / Up / Table of Contents
# MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.