如果将记录插入到包含列的表中
,则可以通过调用该函数
AUTO_INCREMENT
来获取存储在该列中的值
。mysql_insert_id()
AUTO_INCREMENT
您可以通过执行以下代码(假定您已检查语句是否成功)
从 C 应用程序中检查值是否存储在列中。它确定查询是否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
值已经产生时,你也可以通过执行一个SELECT
LAST_INSERT_ID()
带
mysql_real_query()
或
的语句mysql_query()
并从该语句返回的结果集中检索值来获得它。
插入多个值时,返回最后一个自动递增的值。
对于LAST_INSERT_ID()
,最近生成的 ID 以每个连接为基础在服务器中维护。它不会被另一个客户端更改。如果您
AUTO_INCREMENT
使用非魔法值(即 notNULL
和 not
的值0
)更新另一列,它甚至不会更改。从多个客户端同时使用
LAST_INSERT_ID()
和
AUTO_INCREMENT
列是完全有效的。每个客户端都将收到客户端执行
的最后一条语句的最后插入的 ID
。
如果要使用为一个表生成的 ID 并将其插入到第二个表中,可以使用如下 SQL 语句:
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
mysql_insert_id()
返回存储到AUTO_INCREMENT
列中的值,无论该值是通过存储自动生成的
NULL
还是0
被指定为显式值。
LAST_INSERT_ID()
仅返回自动生成的AUTO_INCREMENT
值。NULL
如果您存储or以外的显式值
0
,则不会影响 返回的值
LAST_INSERT_ID()
。
有关获取
AUTO_INCREMENT
列中最后一个 ID 的更多信息:
有关
LAST_INSERT_ID()
可在 SQL 语句中使用的信息,请参阅 信息函数。有关
mysql_insert_id()
您在 C API 中使用的函数的信息,请参阅 第 5.4.37 节,“mysql_insert_id()”。有关在使用 Connector/J 时获取自动增量值的信息,请参阅 通过 JDBC检索
AUTO_INCREMENT
列值。有关在使用连接器/ODBC 时获取自动增量值的信息,请参阅 获取自动增量值。