2012-03-10 81 views
0

在sql服務器中,我創建了一個表與列ID作爲int與身份,第二個是名稱varchar,我創建了一個proc插入和我寫入語句,插入後記錄我想插入的記錄ID爲我使用@ @identity它正在工作,但奇怪的@@身份顯示更多的行,但在表中,很多記錄沒有減少recrords。我的proc是在sql server中的身份?

 alter proc usp_test123 
     as begin 
     set nocount on; 
      insert into test123 values('sasi') 
      select @@IDENTITY 
      end 
+2

請重新閱讀你的問題。它沒有任何意義。 – 2012-03-10 07:30:08

回答

4

您的意思是返回的標識可能是10,而表中只有8行?

identity列不保證是連續的。如果行被刪除,或者執行插入的事務回滾,則系列中將缺少數字。

請注意,您應該使用SCOPE_IDENTITY()而不是@@IDENTITY@@IDENTITY返回插入的最新行的ID。如果在您插入的表上有觸發器,您將得到由觸發器插入的最新行。 SCOPE_IDENTITY()獲取在同一代碼範圍內生成的最新身份。

+0

好的,謝謝你的迴應,安德斯,有沒有什麼明確的解釋 – 2012-03-10 07:32:04

+0

是的,是這樣的,你對安德斯先生 – 2012-03-10 07:32:32