2010-01-05 62 views

回答

6

我不知道您正在使用哪種語言,在PHP的MySQL的功能,你可以使用

mysql_insert_id()

在我所知的每一個mySQL客戶端庫中都有類似的功能。

此外,還有一個native mySQL function

LAST_INSERT_ID()(無參數) 返回由最 最近執行的INSERT語句用於 AUTO_INCREMENT列設置爲 第一自動 生成的值影響這樣的列。例如, 插入產生 一個AUTO_INCREMENT值的行之後,就可以得到 這樣的值:

的MySQL> SELECT LAST_INSERT_ID(); - > 195

當然,使用AUTO_INCREMENT的主鍵需要這些功能才能正常工作。

+0

+1的原生MySQL的方法是正確的,太 - 從來沒有想過一個^^ – 2010-01-05 22:34:49

2

對於一個AUTO_INCREMENT id字段的表:

UPDATE tbl SET col1 = 'val1' WHERE id = MAX(id);

+1

不保證,如果有多個用戶/線程 – duffymo 2010-01-05 23:07:27

2

如果這是一行已插入到您的腳本(您想從中更新它的同一腳本)並且您的表上有一個auto_increment列,則可以使用函數(如這些,對於PHP:

應該有可能用於應用程序的任何語言的等效語言。


如果您試圖從另一個腳本執行更新,而不是執行插入操作,並且仍然有auto_increment列,則最好的方法可能是更新具有最大值的行該列:

update your_table 
set your_column = ... 
where id = max(id) 

或者,在兩個步驟(不知道它會在一個工作)

select max(id) as id from your_table 

update your_table set your_column = ... where id = [what you got with thr first query] 
+0

男人男人的男人......你的PHP簡單的答案最好的。 :) – 2010-01-05 22:32:31

+0

即使這個問題沒有指定「php」,我仍然給出一個與PHP相關的答案 - 好吧,PHP經常使用,它可能適用於這裏;;謝謝 :-) – 2010-01-05 22:33:59

2

您還可以使用UPDATE table SET ... WHERE id=LAST_INSERT_ID()(suppos最後一個插入位於要查詢的表上)。

1

我不會使用兩個步驟來找到最後一個插入ID,只是因爲可以同時添加一條新記錄。

根據你的版本,你應該可以調用$ handle-> last_id();或$ handle - > {mysql_insertid};

克里斯