2012-02-02 48 views
3

我正在構建一個Web應用程序,它可以被多個用戶同時使用。他們可以同時添加數據。如何正確獲取mysql中最後插入的記錄的id?

我有一個名爲doctor_main表如下

Screenshot of DB http://img687.imageshack.us/img687/7033/testxqz.png

一旦一個關於醫生記錄的添加,我想插入記錄的ID(這是一個自動增量字段)歸還。

我知道我可以像使用LAST_INSERT_ID()和mysql_insert_id方法。但我不知道它是如何表現的。

我需要這是由特定的用戶插入的記錄的確切ID。

有時候,如果兩個用戶試圖插入一條記錄,這是返回的ID應該不會被交換。

爲了實現這一目標是什麼樣的MySQL功能我應該使用?

+1

爲什麼不把它放在信任上......它的工作原理比你們在這方面的工作多年。返回的ID是該用戶線程最後一次插入的ID,而不是其他任何用戶線程的ID。 – 2012-02-02 12:09:15

+1

對於AUTO_INCREMENT列自動生成的ID,LAST_INSERT_ID()基於每個MySQL連接。因此,只要您在同一個連接上調用LAST_INSERT_ID(),在執行INSERT之後,就沒有併發問題。 – nos 2012-02-02 12:17:11

+0

@MarkBaker Yeap,我希望比我多思考多年,這就是爲什麼我在這裏要求更好的思想來確保。懷疑和澄清不僅僅是追隨而是犯罪。:) – 2012-02-02 12:18:30

回答

8

有一整頁的手冊中,致力於這個問題:

下面是該頁面報價,可能有助於回答你的問題:

對於LAST_INSERT_ID ()中,最近生成的ID在每個連接的基礎上保存在服務器中。它不會被另一個客戶更改。

+0

@All我發現mysql_insert_id是爲了實現我的任務:)感謝很多應對的最佳選擇 – 2012-02-02 12:21:36

2

根據docsmysql_insert_id將返回給您以前完成的插入的確切ID。

3

mysql_insert_id()返回最後插入記錄的完全ID,所以如果你只是echo mysql_insert_id()你會得到最後插入行的ID。

-1

如果您對last_insert_id的機制有疑問,那麼您可以手動分配id而不是通過MySQL的auto_increment功能。

2

LAST_INSERT_ID()mysql_insert_id工作正常。每個客戶端將收到最後插入的ID,以獲取客戶端執行的最後一條語句。

2

LAST_INSERT_ID()每個連接操作;多個用戶將使用多個連接,所以用戶之間永遠不會交換ID。

相關問題