在sql server中的身份?

时间:2012-03-10 07:26:49

标签: sql-server

在sql server中,我创建了一个列id为int的表,带有identity,第二个是name varchar,我创建了一个proc用于插入,我写入语句,插入记录后我希望插入的记录id为我使用@@ identity它正在工作但是,奇怪的是@@ identity显示更多的行,但是在表中那些记录并不存在更少的recrords。我的过程是

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

1 个答案:

答案 0 :(得分:4)

你的意思是返回的身份可能是10,而表中只有8行吗?

identity列不保证是连续的。如果删除行,或者回滚执行插入的事务,则系列中将缺少数字。

作为旁注,您应该使用SCOPE_IDENTITY()代替@@IDENTITY@@IDENTITY返回插入的最新行的id。如果您插入的表上有触发器,您将获得触发器插入的最新行。 SCOPE_IDENTITY()获取在相同代码范围内生成的最新标识。