mysql_insert_id()
my_ulonglong mysql_insert_id(MYSQL *mysql)
Description
Returns the value generated for an
AUTO_INCREMENT column by the previous
INSERT or UPDATE
statement. Use this function after you have performed an
INSERT statement into a table that contains
an AUTO_INCREMENT field, or have used
INSERT or UPDATE to set a
column value with
LAST_INSERT_ID(.
expr)
More precisely,
mysql_insert_id() is updated
under these conditions:
INSERT statements that store a value into
an AUTO_INCREMENT column. This is true
whether the value is automatically generated by storing the
special values NULL or
0 into the column, or is an explicit
non-special value.
In the case of a multiple-row INSERT
statement,
mysql_insert_id() returns
the first automatically generated
AUTO_INCREMENT value; if no such value is
generated, it returns the last explicit
value inserted into the AUTO_INCREMENT
column.
If no rows are successfully inserted,
mysql_insert_id() returns
0.
Starting in MySQL 5.0.54, if an INSERT ...
SELECT statement is executed, and no automatically
generated value is successfully inserted,
mysql_insert_id() returns
the ID of the last inserted row.
INSERT statements that generate an
AUTO_INCREMENT value by inserting
LAST_INSERT_ID(
into any column or by updating any column to
expr)LAST_INSERT_ID(.
expr)
If the previous statement returned an error, the value of
mysql_insert_id() is
undefined.
mysql_insert_id() returns
0 if the previous statement does not use an
AUTO_INCREMENT value. If you need to save the
value for later, be sure to call
mysql_insert_id() immediately
after the statement that generates the value.
The value of mysql_insert_id()
is not affected by statements such as SELECT
that return a result set.
The value of mysql_insert_id()
is affected only by statements issued within the current client
connection. It is not affected by statements issued by other
clients.
The LAST_INSERT_ID() SQL
function returns the most recently generated
AUTO_INCREMENT value, and is not reset
between statements because the value of that function is
maintained in the server. Another difference from
mysql_insert_id() is that
LAST_INSERT_ID() is not updated
if you set an AUTO_INCREMENT column to a
specific non-special value. See
Section 11.10.3, “Information Functions”.
mysql_insert_id() returns
0 following a CALL
statement for a stored procedure that generates an
AUTO_INCREMENT value because in this case
mysql_insert_id() applies to
CALL and not the statement within the
procedure. Within the procedure, you can use
LAST_INSERT_ID() at the SQL
level to obtain the AUTO_INCREMENT value.
The reason for the differences between
LAST_INSERT_ID() and
mysql_insert_id() is that
LAST_INSERT_ID() is made easy to
use in scripts while
mysql_insert_id() tries to
provide more exact information about what happens to the
AUTO_INCREMENT column.
Return Values
Described in the preceding discussion.
Errors
None.

User Comments
Add your own comment.