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数据迁移到MySQL的方法
- SQL Server中找出执行时间过长的作业
- sql server中的死锁
- 利用数据库安装centos7(CentOS安装SQL Server vNext CTP1教程)
- sqlserver 空间数据类型(SQL Server数据类型转换方法)
- sqlserver安装日志文件夹(SQL SERVER日志进行收缩的图文教程)
- sqlserver怎么显示变量所占字节数(SQL Server中关于基数估计计算预估行数的一些方法探讨)
- sql server2012下载安装教程(SQL Server 2012 安装与启动图文教程)
- sql server入门教程(SQL Server AlwaysOn读写分离配置图文教程)
- sql server 时间与日期函数(SQL Server日期加减函数DATEDIFF与DATEADD用法分析)
- sql server中通过datename获取日期中部分数据
- SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法(SQL Server免费版的安装以及使用SQL Server Management StudioSSMS连接数据库的图文方法)
- activiti需要sql语句吗(Activiti-Explorer使用sql server数据库实现方法)
- sqlserver 高级查询(SQL Server2019数据库之简单子查询的具有方法)
- sqlserver中根据日期时间获取秒数(sql server编写通用脚本实现获取一年前日期的方法)
- sqlserver如何设置定时备份(SQL Server使用脚本实现自动备份的思路详解)
- 乡村爱情15 宋晓峰怀疑自己孩子,腾飞与姜奶奶亲子鉴定出结果(宋晓峰怀疑自己孩子)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
- 当年的 白洋淀战神 练肌肉 嘎子哥也成为行走的荷尔蒙(当年的白洋淀战神)
- 肌肉小子陈康, 亚洲巨兽 黄哲勋,哪个才是你的菜(肌肉小子陈康亚洲巨兽)
- 新闻周刊 青岛网红 赵厂长 编段子一箩筐输出快乐,陪父亲十二载勇斗病魔(新闻周刊青岛网红)
- 44岁夏雨演谋女郎爸,大其24岁却看不出,互动不怕袁泉吃醋(44岁夏雨演谋女郎爸)
热门推荐
- phpsetcookie参数说明(PHP的cookie与session原理及用法详解)
- python的opencv图片识别(OpenCV-Python 摄像头实时检测人脸代码实例)
- dedecms内容页代码(DEDECMS生成HTML时提示 DedeTag Engine Create File False的解决方法)
- table单元格固定宽度
- 列举服务器网络防御措施(如何对Web服务器进行飓风级防御)
- vue 富文本图片上传(vue.js云存储实现图片上传功能)
- phpsession方法(PHP SESSION机制的理解与实例)
- dede菜单激活状态(DEDE采集大师官方留后门的删除办法)
- 不喜欢现在的工作 该怎么办
- MySQL主从状态检查的实现(MySQL主从状态检查的实现)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9