如果将一条记录插入包含AUTO_INCREMENT
属性,可以获取存储在该列中的值mysql_insert_id ()
函数。
您可以从C应用程序中检查值是否存储在AUTO_INCREMENT
列,执行以下代码(假定您已经检查语句成功)。它确定查询是否为插入
与一个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选择LAST_INSERT_ID ()
声明与mysql_real_query ()
或mysql_query ()
并从语句返回的结果集中检索值。
当插入多个值时,将返回最后一个自动加1的值。
为LAST_INSERT_ID ()
,最近生成的ID在服务器中以每个连接为基础进行维护。它不会被另一个客户端更改。即使你更新另一个,它也不会改变AUTO_INCREMENT
列中包含一个非魔法值(也就是说,一个非魔法值零
而不是0
).使用LAST_INSERT_ID ()
和AUTO_INCREMENT
同时来自多个客户机的列是完全有效的。每个客户机将收到最后一条语句的最后插入的ID那客户端执行。
如果你想使用为一个表生成的ID并将其插入到第二个表中,你可以使用这样的SQL语句:
INSERT INTO foo (auto,text) VALUES(NULL,'text');#通过插入NULL INSERT INTO foo2 (ID,text) VALUES(LAST_INSERT_ID(),'text');#在第二个表中使用ID
mysql_insert_id ()
对象中存储的值AUTO_INCREMENT
列,该值是否由存储自动生成零
或0
或指定为显式值。LAST_INSERT_ID ()
只返回自动生成的AUTO_INCREMENT
值。如果您存储显式值,而不是零
或0
,不影响返回值LAST_INSERT_ID ()
.
中的最后一个ID的详细信息AUTO_INCREMENT
专栏:
的信息
LAST_INSERT_ID ()
,可以在SQL语句中使用,请参阅信息功能.的信息
mysql_insert_id ()
,即您在C API中使用的函数,请参阅部分5.4.38”mysql_insert_id ().有关在使用Connector/J时获取自动递增值的信息,请参见检索
AUTO_INCREMENT
通过JDBC的列值.有关在使用Connector/ODBC时获取自动递增值的信息,请参见获取自动递增值.