搜档网
当前位置:搜档网 › SQL Server获取插入数据的自增长字段的值

SQL Server获取插入数据的自增长字段的值

SQL Server获取插入数据的自增长字段的值
SQL Server获取插入数据的自增长字段的值

在Sql Server中插入一条数据,想立即获取它标识值,可以用以下

三中方法:

1.SCOPE_IDENTITY - scope_identity()

返回当前会话和当前作用域中的任何表最后生成的标识值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。

2.IDENT_CURRENT - ident_current('表名')

返回任何会话和任何作用域中的指定表最后生成的标识值。这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制,却会受到表的限制。

3.@@IDENTITY - 全局变量

返回为当前会话的所有作用域中的任何表最后生成的标识值。

一直以来都是使用@@identity来获得最后一个插入到表的记录的identity值,最近发现这种方法在某种情况是不可靠的,先来看看

两个概念

作用域:在SQL SERVER作用域就是一个模块-存储过程,触发器,

函数或批处理

会话:一个用户连接产生的所有上下文信息

相同点:都是返回最后插入的标识值

不同点:

@@identity:返回当前会话最后一个标识值,不限于特定的作用域;ident_current('tablename'):返回任何会话,任何作用域中的指定表中生成的最后一个标识值;

scope_identity:返回当前会话当前作用域任何表生成的最后一个标识值。

相关主题