如何獲得上次插入行的唯一ID |
發(fā)布時(shí)間: 2012/8/22 17:16:03 |
如果將記錄插入包含AUTO_INCREMENT列的表中,通過調(diào)用mysql_insert_id()函數(shù),可獲取保存在該列中的值。 電腦軟件www.boydavid.com 通過執(zhí)行下述代碼,可從C應(yīng)用程序檢查某一值是否保存在AUTO_INCREMENT列中(假定該語句已成功執(zhí)行)。它能確定查詢是否是具有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);
} 電腦常識(shí)www.boydavid.com
關(guān)于更多信息,請(qǐng)參見25.2.3.36節(jié),“mysql_insert_id()”。
生成新的AUTO_INCREMENT值時(shí),也能與mysql_query()一起通過執(zhí)行SELECT LAST_INSERT_ID()語句獲得它,并從該語句返回的結(jié)果集檢索該值。
對(duì)于LAST_INSERT_ID(),最近生成的ID是在服務(wù)器上按連接維護(hù)的。它不會(huì)被另一個(gè)客戶端改變。即使用non-magic值(即非Null非0值)更新了另一個(gè)AUTO_INCREMENT列,也不會(huì)更改它。
如果打算使用從某一表生成的ID,并將其插入到第2個(gè)表中,可使用如下所示的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列中的值,無論該值是因存儲(chǔ)NULL或0而自動(dòng)生成的,或是明確指定的,均如此。LAST_INSERT_ID()僅返回自動(dòng)生成的AUTO_INCREMENT值。如果你保存了除NULL或0之外的確切值,不會(huì)影響LAST_INSERT_ID()返回的值。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |