|
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, "Получая Автоинкрементные Значения".