2010-08-19 87 views

回答

1

MSDN「的SCOPE_IDENTITY()函數將返回空值如果函數之前的任何INSERT語句到調用身份列出現在範圍內。「

+0

http://stackoverflow.com/questions/3526851/scope-identity-question – 2010-08-19 22:39:48

+1

好,所以你不是說什麼解決方案是...如何保持它的範圍。我有同樣的問題,我有一個插入嘗試到一個臨時表變量,並檢查插入語句結束後的行的身份,它是空的。那麼你怎麼把它放在插入物的範圍之內呢? – PositiveGuy 2012-05-25 15:12:46

+0

對不起,我沒有看到您的評論早些時候,但因爲我在這裏,我想我可能也會迴應後代:)你需要SCOPE_IDENTITY()調用與INSERT語句在同一批處理。將所有代碼放入存儲過程並調用proc,或將所有語句放入一個臨時批處理中並執行一次執行。 – 2015-06-04 00:36:12

8

更具體地說,SCOPE_IDENTITY()只返回在與SCOPE_IDENTITY()調用相同範圍內生成的最新標識值。在您發佈的示例中,SCOPE_IDENTITY()調用是該批處理中唯一的語句(因此是當前範圍內的唯一語句),因此它將返回null。如果您想獲取爲特定表生成的最新標識值,請嘗試IDENT_CURRENT('tablename')。這不受範圍限制,它只是爲您提供給定表格生成的最新身份值。