Spec-Zone .ru
спецификации, руководства, описания, API
|
Если Вы вставляете запись в таблицу, которая содержит 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
столбец:
Для получения информации о LAST_INSERT_ID()
, который может использоваться в пределах SQL-оператора,
видеть Раздел
12.14, "информационные Функции".
Для получения информации о mysql_insert_id()
, функция, которую Вы используете изнутри API C, видят
Раздел
21.8.7.37,"mysql_insert_id()
".
Для получения информации о получении автопостепенно увеличенного значения при
использовании Connector/J см. Раздел
21.3.6.4, "Получая AUTO_INCREMENT
Значения столбцов через JDBC"
.
Для получения информации о получении автопостепенно увеличенного значения при использовании Соединителя/ODBC см. Раздел 21.1.7.1.1, "Получая Автоинкрементные Значения".