GNU Info

Info Node: (mysql.info)Getting unique ID

(mysql.info)Getting unique ID


Next: C API linking problems Prev: Query results Up: C API problems
Enter node , (file) or (file)node

How Can I Get the Unique ID for the Last Inserted Row?
......................................................

If you insert a record in a table containing a column that has the
`AUTO_INCREMENT' attribute, you can get the most recently generated ID
by calling the `mysql_insert_id()' function.

You can also retrieve the ID by using the `LAST_INSERT_ID()' function in
a query string that you pass to `mysql_query()'.

You can check if an `AUTO_INCREMENT' index is used by executing the
following code. This also checks if the query was an `INSERT' with an
`AUTO_INCREMENT' index:

     if (mysql_error(&mysql)[0] == 0 &&
         mysql_num_fields(result) == 0 &&
         mysql_insert_id(&mysql) != 0)
     {
         used_id = mysql_insert_id(&mysql);
     }

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').

If you want to use the ID that was generated for one table and insert
it into a second table, you can use SQL statements like this:

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


automatically generated by info2www version 1.2.2.9