2015-05-28 117 views
0

我需要獲取插入到表中的最後一條記錄的ID。你可以結合INSERT INTO和Last_Insert_ID在一個SQL語句中

INSERT INTO mytable (Column1, Column2) VALUE ('Test', 'Bob'); 
SELECT/SET LAST_INSERT_ID() as NewID; 
Response.Write rst("NewID") '(for example) 

它可以在一個語句運行,或者我需要運行INSERT SQL已經跑了後SELECT LAST_INSERT_ID

我使用MYSQL和ASP

+0

如果插入是在不同的表,那麼你可以使用觸發器如果通過SQL其他使用應用層面進行需求它可以很容易地完成。 –

+2

爲什麼不使用**存儲過程**呢? – BabyDuck

+0

[LAST \ _INSERT \ _ID()MySQL]的可能的重複(http://stackoverflow.com/questions/3837990/last-insert-id-mysql) – Lankymart

回答

1

你需要每statment後運行它,因爲它總是會返回最近一次插入記錄的一個ID。

要實現您的目標,您需要做的是,無論何時將任何記錄插入到表中,獲取最後一個id並將其存儲到任何字符串/表中並從sproc中返回。這樣你就可以一次獲得所有插入的id。

+0

是不是OP在第一次嘗試避免地點?此外,這是SQL Server **不是** MySQL - *「我正在使用MYSQL和ASP」* – Lankymart

+1

我沒有任何問題,運行「SELECT LAST_INSERT_ID()作爲NewID」,每次作爲兩個單獨的語句運行。 我只關心準確性,如果在INSERT INTO和SELECT LAST_INSERT_ID()之間插入新記錄會發生什麼情況,賠率必須是十億分之一,但這是可能的。 –

+0

基於BabyDuck已經指出的其他人已經指出的那樣,您不確定這是否值得您選擇[原始答案](http://stackoverflow.com/revisions/30506961/1)。第一個答案完全錯過了這一點,但這是更接近但不是很好*(沒有真正的解釋)*。 – Lankymart

0

我認爲你需要運行2的過程中,首先插入,然後按ID遞減選擇順序