2015-05-06 58 views
0

假設我有一個要插入的數據數組。我將有一個看起來像這樣的插入:MySQL插入 - 對於每一行,返回插入ID

INSERT INTO `table` (`name`, `value`) VALUES('name1','value1'),('name2','value2') 

我們假設table都有一個主鍵。

有沒有辦法,而像這樣批量插入,抓住每行的最後插入ID,並返回這些新ID?我知道你不能通過LAST_INSERT_ID()來做到這一點,但我想知道如果我可以使用類似於遊標的東西來實現此功能,並且可能需要一個臨時表來存儲這些值,直到我將它們返回爲止。

任何幫助將是偉大的。

回答

0

https://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

LAST_INSERT_ID() will return the first id from a multi row insert. 

所以你可以返回值和:在一些地方類似這樣

INSERT INTO `table1` (`name`, `value`) VALUES('name1','value1'),('name2','value2'); 

SET @firstid := LAST_INSERT_ID(); 
SELECT * from table1 where id>[email protected]; 
+0

我見過的解決方案。我擔心的是非增量主鍵(即其他請求同時插入行) –

+0

交易時沒有相同的時間。如果你做了一個命令「INSERT」 - 沒有連續的情況 – Alex