@@IDENTITY与SCOPE_IDENTITY的用法

SCOPE_IDENTITY   和   @@IDENTITY   的作用都是取得返回在当前会话中的任何表内所生成的最后一个标识值,简单的说就是在执行一条插入语句之后使用@@IDENTITY的全局变量,取得插入记录的ID号但是有个问题就是,@@IDENTITY是全局的,所以在他的功能会体现在所有作用域,一个操作,一个触发器,一个存储过程叫做一个作用域,这时候如果出现多个作用域的情况的时候,@@IDENTITY所取得的ID号就是最后一个作用域产生的结果。这时候我们要使用SCOPE_IDENTITY方法来作了。SCOPE_IDENTITY   只返回插入到当前作用域中的值;@@IDENTITY   不受限于特定的作用域。

使用方法:select   SCOPE_IDENTITY()   as   ID   from   [table]select   @@IDENTITY   as   ID   from   [table]   
  实例:   
        sql="SET   NOCOUNT   ON;insert   into   [Table](Item)   values(‘"&Item&"‘)"sql=sql&";select   @@IDENTITY   as   ID   from   [Table];SET   NOCOUNT   OFF;"

在插入某些自增表的时候,需要将其打开:
 语法:SET   IDENTITY_INSERT   TableName   ON

时间: 2024-10-14 02:08:30

@@IDENTITY与SCOPE_IDENTITY的用法的相关文章

谈谈@@IDENTITY 和 SCOPE_IDENTITY()的区别

在ms sql server中一张表有自增长字段,最近插入表中记录的自增长字段可以通过@@IDENTITY或者SCOPE_IDENTITY()取得. 通常情况下@@IDENTITY 和 SCOPE_IDENTITY()可以起到同样的效果,但是也不尽然,他们两者之间还是有区别的.微软的文档上这样描述:@@IDENTITY and SCOPE_IDENTITY return the last identity value generated in any table in the current s

@@identity与scope_identity()函数的区别

@@IDENTITY 和SCOPE_IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值.但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值:@@IDENTITY 不受限于特定的作用域. 例如,有两个表 T1 和 T2,并且在 T1 上定义了 INSERT 触发器.当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行. 该方案演示了两个作用域:在 T1 上的插入,以及在 T2 通过触发器的插入. 假设 T1 和 T2 都有标识列,@@IDENTITY 和 SC

sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别

原文:sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别 IDENT_CURRENT 返回为任何会话和任何作用域中的指定表最后生成的标识值. 语法 IDENT_CURRENT('table_name') 参数 table_name 是将要返回其标识值的表的名称.table_name 的数据类型为 varchar,没有默认值. 返回类型 sql_variant 注释 IDENT_CURRENT 类似于 Microsoft

@@ROWCOUNT,@@IDENTITY, SCOPE_IDENTITY()

@@ROWCOUNT 返回受上一语句影响的行数,常用在 Update,Insert,Delete.如果行数大于 20 亿,请使用 ROWCOUNT_BIG. @@IDENTITY  返回最后插入的标识值的系统函数.可以用在插入数据后把标识值返回(不是最好的选择)  @@identity使用注意事项: 我们要慎用@@IDENTITY,原因是 @@IDENTITY 它总是获取最后一条变更数据的自增字段的值,而忽略了进行变更操作所在的范围约束.比如,我有表 A 和表 B 两个表,现在我在表 A 上定义

比较 IDENT_CURRENT、@@IDENTITY 和 SCOPE_IDENTITY 返回的标识值

SELECT @@IDENTITY; /* 针对当前会话,所有作用域 Returns the value 100. This was inserted by the trigger.*/ SELECT SCOPE_IDENTITY(); /* 针对当前会话,当前作用域 Returns the value 1. This was inserted by the INSERT statement two statements before this query.*/ SELECT IDENT_CUR

SCOPE_IDENTITY的用法【转载】

SCOPE_IDENTITY   和   @@IDENTITY   的作用都是取得返回在当前会话中的任何表内所生成的最后一个标识值,简单的说就是在执行一条插入语句之后使用@@IDENTITY的全局变量,取得插入记录的ID号但是有个问题就是,@@IDENTITY是全局的,所以在他的功能会体现在所有作用域,一个操作,一个触发器,一个存储过程叫做一个作用域,这时候如果出现多个作用域的情况的时候,@@IDENTITY所取得的ID号就是最后一个作用域产生的结果.这时候我们要使用SCOPE_IDENTITY

<转>SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY

MSDN对官方解释:这三个函数都返回最后生成的标识值. 但是,上述每个函数中定义的“最后”的作用域和会话有所不同. 1.IDENT_CURRENT 返回为某个会话和当前作用域中的指定表生成的最新标识值. 如果 IDENT_CURRENT 值为 NULL(因为表从未包含行或已被截断),IDENT_CURRENT 函数将返回种子值. 2.@@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值. 如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL. 如果插

SCOPE_IDENTITY的用法

SCOPE_IDENTITY   和   @@IDENTITY   的作用都是取得返回在当前会话中的任何表内所生成的最后一个标识值,简单的说就是在执行一条插入语句之后使用@@IDENTITY的全局变量,取得插入记录的ID号但是有个问题就是,@@IDENTITY是全局的,所以在他的功能会体现在所有作用域,一个操作,一个触发器,一个存储过程叫做一个作用域,这时候如果出现多个作用域的情况的时候,@@IDENTITY所取得的ID号就是最后一个作用域产生的结果.这时候我们要使用SCOPE_IDENTITY

SQL Server 中@@IDENTITY的用法

原文地址:http://www.studyofnet.com/news/145.html 本文导读:@@IDENTITY是返回上次插入的标识值,标识值一般指的是自动增长值.但是如果想只返回插入到当前作用域中的值,则使用SCOPE_IDENTITY . 用法: 用select @@identity得到上一次插入记录时自动产生的ID 如果你使用存储过程的话,将非常简单,代码如下:SET @[email protected]@IDENTITY 说明: 在一条 INSERT.SELECT INTO 或大