Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql server中的标识?_Sql Server - Fatal编程技术网

Sql server sql server中的标识?

Sql server sql server中的标识?,sql-server,Sql Server,在sql server中,我创建了一个表,其列id为int with identity,第二个是name varchar,我创建了一个用于插入的proc,并写入一条语句,在插入记录后,我希望插入的记录id可用@identity,但奇怪的是@identity显示了更多的行,但在表中,并没有太多的记录,重复的次数更少。我的程序是 alter proc usp_test123 as begin set nocount on; in

在sql server中,我创建了一个表,其列id为int with identity,第二个是name varchar,我创建了一个用于插入的proc,并写入一条语句,在插入记录后,我希望插入的记录id可用@identity,但奇怪的是@identity显示了更多的行,但在表中,并没有太多的记录,重复的次数更少。我的程序是

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

您的意思是返回的标识可以是10,而表中只有8行吗

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


作为旁注,您应该使用
SCOPE\u IDENTITY()
而不是
@@IDENTITY
<代码>@@IDENTITY返回最近插入的行的id。如果在插入到的表上有触发器,则将获得触发器插入的最新行
SCOPE\u IDENTITY()
获取在同一代码作用域中生成的最新标识。

您的意思是返回的标识可以是10,而表中只有8行吗

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


作为旁注,您应该使用
SCOPE\u IDENTITY()
而不是
@@IDENTITY
<代码>@@IDENTITY返回最近插入的行的id。如果在插入到的表上有触发器,则将获得触发器插入的最新行
SCOPE\u IDENTITY()
获取在同一代码范围内生成的最新标识。

请重新阅读您的问题。这没有道理。请重新阅读您的问题。谢谢你的回答,安德斯,有什么明确的解释吗?谢谢你的回答,安德斯,有什么明确的解释吗