3.6.9获取最后插入行的唯一ID

如果将一条记录插入包含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专栏: