如何获得上次插入行的唯一ID |
发布时间: 2012/8/22 17:16:03 |
如果将记录插入包含AUTO_INCREMENT列的表中,通过调用mysql_insert_id()函数,可获取保存在该列中的值。 电脑软件www.boydavid.com 通过执行下述代码,可从C应用程序检查某一值是否保存在AUTO_INCREMENT列中(假定该语句已成功执行)。它能确定查询是否是具有AUTO_INCREMENT索引的INSERT: if ((result = mysql_store_result(&mysql)) == 0 &&
mysql_field_count(&mysql) == 0 &&
mysql_insert_id(&mysql) != 0)
{
used_id = mysql_insert_id(&mysql);
} 电脑常识www.boydavid.com
关于更多信息,请参见25.2.3.36节,“mysql_insert_id()”。
生成新的AUTO_INCREMENT值时,也能与mysql_query()一起通过执行SELECT LAST_INSERT_ID()语句获得它,并从该语句返回的结果集检索该值。
对于LAST_INSERT_ID(),最近生成的ID是在服务器上按连接维护的。它不会被另一个客户端改变。即使用non-magic值(即非Null非0值)更新了另一个AUTO_INCREMENT列,也不会更改它。
如果打算使用从某一表生成的ID,并将其插入到第2个表中,可使用如下所示的SQL语句:
INSERT INTO foo (auto,text)
VALUES(NULL,'text'); # generate ID by inserting NULL 电脑入门www.boydavid.com
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或0之外的确切值,不会影响LAST_INSERT_ID()返回的值。 本文出自:亿恩科技【www.enkj.com】 |