2013-02-27 80 views
0

我用odbc_connection,問題是我需要插入最後一個id。檢索最後插入的id的問題

我在這裏使用這個查詢,但我沒有得到所要的結果:

echo $result = odbc_exec($connection, "SELECT @"."@IDENTITY AS Ident"); 

我做錯什麼了嗎?

+0

我建議使用**'SCOPE_IDENTITY()**而不是其他任何東西來抓取新插入的標識值。 [請參閱此博客文章,瞭解有關WHY的解釋](http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity記錄/) – 2013-02-27 16:18:31

+0

@pyetjegoo調用'IDENTITY'之前,你做了任何插入,如果是這樣,然後發佈該查詢 – vikas 2013-02-27 16:30:02

回答

0

您需要使用IDENT_CURRENT('dtabase name')來檢索從任何連接插入到列中的最後一個標識值。

您的解決方案無法正常工作的原因是@@身份只適用於當前連接並忽略其他連接。

0

如果你有MySQL的ODBC下 - 你可以使用一個查詢:

"SELECT LAST_INSERT_ID();" 

SELECT @@IDENTITY AS ID 
+0

是的,我試過所有這些,但它沒有工作.. aparently我沒有它..因爲我連接到一個sql服務器.. – pyetjegoo 2013-02-27 15:56:59

+0

好奇... $ result = odbc_exec($ conn,「SELECT @」。「@ IDENTITY AS Ident」);必須工作。 – 2013-02-27 16:00:22

+0

它給了我一個笨蛋,但它不是ID ... – pyetjegoo 2013-02-27 16:05:43

0

我假設你正在插入表中有標識列?

當你說你沒有得到所需的結果,你的意思是你得到了錯誤的數字,或者你是空的?如果你得到錯誤的數字,你插入的表是否有觸發器插入到另一個表中?

+0

我剛剛注意到你的評論,它返回錯誤的數字,嘗試scope_identity()作爲marc_s建議。 – Adrian 2013-02-27 16:36:06