SCOPE_IDENTITY的用法
类别:数据库 浏览量:2198
时间:2015-4-6 SCOPE_IDENTITY的用法
SCOPE_IDENTITY的用法SCOPE_IDENTITY的作用是返回为当前会话和当前作用域中的任何表最后生成的标识值
例如
1、有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。
2、假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。
3、@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。
4、SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。
SCOPE_IDENTITY函数,IDENT_CURRENT函数以及@@IDENTITY的区别
1、SCOPE_IDENTITY函数返回当前作用域内,返回最后一次插入数据表的标识,意思是说,高并发的时候,它不会受到其它会话里的INSERT操作的影响
2、IDENT_CURRENT函数有点小意思,它不受作用域的影响,但是受限于具体的表,即它返回某表最后一条INSERT的返回标识,不受会话作用域影响,但是受到指定的表的影响
3、@@IDENTITY这个全局变量只受会话影响,不受具体表影响,也不受作用域影响
4、例如
USE pubs
DROP TABLE t6
DROP TABLE t7
GO
CREATE TABLE t6(id int IDENTITY)
CREATE TABLE t7(id int IDENTITY(100,1))
GO
CREATE TRIGGER t6ins ON t6 FOR INSERT
AS
BEGIN
INSERT t7 DEFAULT VALUES
END
GO
--end of trigger definition
SELECT * FROM t6
--id is empty.
SELECT * FROM t7
--id is empty.
--Do the following in Session 1
INSERT t6 DEFAULT VALUES
SELECT @@IDENTITY
/*Returns the value 100, which was inserted by the trigger.*/
SELECT SCOPE_IDENTITY()
/* Returns the value 1, which was inserted by the
INSERT stmt 2 statements before this query.*/
SELECT IDENT_CURRENT('t7')
/* Returns value inserted into t7, i.e. in the trigger.*/
SELECT IDENT_CURRENT('t6')
/* Returns value inserted into t6, which was the INSERT statement 4 stmts before this query.*/
-- Do the following in Session 2
SELECT @@IDENTITY
/* Returns NULL since there has been no INSERT action
so far in this session.*/
SELECT SCOPE_IDENTITY()
/* Returns NULL since there has been no INSERT action
so far in this scope in this session.*/
SELECT IDENT_CURRENT('t7')
/* Returns the last value inserted into t7.*/
标签:SQL SERVER
您可能感兴趣
- sql server中使用xp_readerrorlog查看错误日志
- sqlserver的图形表(SQL Server纵表与横表相互转换的方法)
- sqlserver字符串判断函数(解决sql server保存对象字符串转换成uniqueidentifier失败的问题)
- sql版本号处理并发(SQL server高并发生成唯一订单号的方法实现)
- sql server 时间与日期函数(SQL Server日期加减函数DATEDIFF与DATEADD用法分析)
- SQL Server多列索引
- sqlserver2016使用教程(SQL Server 2016 Alwayson新增功能图文详解)
- SQL Server锁类型
- sql 如何拆分字符串(SQL Server实现将特定字符串拆分并进行插入操作的方法)
- sqlserver带参数的存储过程(SQL Server 日期和时间的内部存储过程)
- SQL Server中raiserror
- sql server2012自动备份(SQL SERVER 2012数据库自动备份的方法)
- sql server 函数参数表(SQL Server 实现数字辅助表实例代码)
- sql server导入数据csv文件(大容量csv快速内导入sqlserver的解决方法推荐)
- sqlserver拒绝访问怎么办(SQL server服务显示远程过程调用失败的解决方法)
- sql server go语句
- 《内在美》后,一大波新韩剧来袭,李钟硕朴信惠宋慧乔玄彬回归(一大波新韩剧来袭)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
- 郭麒麟(郭麒麟)
- 古人十句 戒骄 名言,醍醐灌顶,受益匪浅(古人十句戒骄名言)
热门推荐
- linux连接工具命令行长度设置(linux userdel 命令的使用)
- sqlifnull如何使用(在 SQL 语句中处理 NULL 值的方法)
- hashtable的javascript实现
- cssbackground(用 CSS background 实现刻度线的呈现)
- docker运行redis并操作(Docker安装MySQL和Redis的方法步骤)
- 面试时如何谈兴趣爱好
- 什么是mime编码(Mime类型与文件后缀对照表)
- qq表情符号对应的代码
- https服务器怎么打开(网站服务器配置是选HTTP还是HTTPS?)
- sql server信息管理案例(利用SQL Server数据库邮件服务实现监控和预警)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9