今天看数据库SQL,有发现存储过程中有使用到SCOPE_IDENTITY()这个函数,后来问了下谷歌大婶,搜到一个比较重要的博客,链接如下:https://dotblogs.com.tw/kkman021/2012/06/27/73096

得知SCOPE_IDENTITY()和@@IDENTITY根本的不同,才知道自己还需要学习很多

@@Identit是会话级别作用域, 下面是针对@@IDENTITY做的测试例子,特此记录. 如有欠缺各位大神分享,共同进步:)

--会话1,第一条返回1,第二条还是返回1,可得知@@IDENTITY获取到的是当前会话最近的插入成功的标识符的值
INSERT INTO t(name) values('插入一条') ;
SELECT @@IDENTITY;
INSERT INTO t SELECT '0个影响' FROM t WHERE 1=2
SELECT @@IDENTITY

--会话1,返回批量插入的最后一个标识符的值(这里是4),所以这里max(id)返回的和@@IDENTITY的值是相等的
INSERT INTO t(name) values('插入一条') ,('插入2条') ,('插入3条')
SELECT MAX(ID) FROM t;
SELECT @@IDENTITY

-- 开启事务,然后回滚,@@IDENTITY值不会消失 (这里@@IDENTITY依旧会显示值,即使没有插入到数据库里面)
BEGIN TRAN
INSERT INTO t(name) values('插入xx条')
SELECT @@IDENTITY;
ROLLBACK TRAN
select * from t where name='插入xx条'

--会话1,给T表添加了触发器(给t2(有主键,未设置标识符)插入一条数据),这个SQL执行以后,返回的是T表新增数据的标识符。,
INSERT INTO t(name) values('插入一条')
SELECT @@IDENTITY SELECT MAX(ID) FROM T2;

--会话1,给T表添加了触发器(给t2(无主键,未设置标识符)插入一条数据),这个SQL执行以后,返回的是T表新增数据的标识符。,
INSERT INTO t(name) values('插入一条')
SELECT @@IDENTITY SELECT MAX(ID) FROM T2;

--会话1,给T表添加了触发器(给t2(无主键,有设置标识符)插入一条数据),这个SQL执行以后,返回的是T2表新增数据的标识符。,
INSERT INTO t(name) values('插入一条')
SELECT @@IDENTITY SELECT MAX(ID) FROM T2;

--会话1,给T表添加了触发器(给t2(有主键,有标识符)插入一条数据),这个SQL执行以后,返回的是T2表新增数据的标识符。
INSERT INTO t(name) values('插入一条')
SELECT @@IDENTITY

BEGIN TRAN
--获取会话级别无触发器情况下的最近批处理的标识符
INSERT INTO T(name) VALUES('插入一条数据')
SELECT MAX(ID) FROM T;
SELECT @@IDENTITY; INSERT INTO T(name) VALUES('插入一条数据')
SELECT MAX(ID) FROM T;
SELECT @@IDENTITY;
COMMIT TRAN

BEGIN TRAN
--获取会话级别有触发器情况下的最近批处理的标识符
INSERT INTO T(name) VALUES('插入一条数据')
SELECT MAX(ID) FROM T;
SELECT @@IDENTITY; INSERT INTO T(name) VALUES('插入一条数据')
SELECT MAX(ID) FROM T;
SELECT @@IDENTITY;
COMMIT TRAN

结论:

  1. @@IDENTITY是作用域会话级别的,

  2. @@IDENTITY取的列标识符的列,  因为每个表只能 有一个列设置为自动增长

参考链接:https://technet.microsoft.com/zh-cn/library/ms187342(SQL.90).aspx

@@IDENTITY详细测试的更多相关文章

  1. [转]IIS的各种身份验证详细测试

    本文转自:http://www.cnblogs.com/chnking/archive/2007/11/20/965553.html#_Toc183326163 一.    IIS的身份验证概述 1. ...

  2. 根据 Promise/A+ 和 ES6 规范,实现 Promise(附详细测试)

    Promise 源码 https://github.com/lfp1024/promise promise-a-plus const PENDING = 'PENDING' const REJECTE ...

  3. Spark1.5.1的安装与部署 每一步详细测试截图

    转载或借鉴请注明转自 http://www.cnblogs.com/FG123/p/5101733.html  谢谢! 1.安装Spark之前需要先安装Java,Scala及Python(个人喜欢用p ...

  4. SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

    1. 背景 SQL Server 搭建AlwaysOn后,我们就希望程序连接时使用虚拟的侦听IP(Listener IP),而不再是主Server 的IP.如果我们有采用中间件,则可以在配置中,直接用 ...

  5. Percona XtraBackup 关于 MySQL备份还原的详细测试

    一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...

  6. Linux磁盘的性能详细测试办法

    # 测试写入20Gb文件sync && time -p bash -c "(dd if=/dev/zero of=test.dd  bs=1000K count=20000; ...

  7. CDH安装详细测试正确

    1. CDH简介 简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到 ...

  8. 详细讲解 A/B 测试关键步骤,快来检查下还有哪些疏漏的知识点

    作为一种对照实验方法,A/B 测试通过比较两个 (或多个) 不同版本之间的差异来验证假设是否正确.该方法将特定测试组从实验其余部分中独立出来,从而得出可靠结果.在被测人不知情且测试场景真实的情况下,A ...

  9. html5中manifest特性测试

    测试环境和工具   chromium  18.0.1025.151 (开发编译版 130497 Linux) Ubuntu 11.04 一.测试内容 1.A页面manifest缓存的js文件,B页面不 ...

随机推荐

  1. Chris Richardson微服务翻译:构建微服务之微服务架构的进程通讯

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯(本文) 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...

  2. Java编程思想读书笔记(二)【一切都是对象】

    begin 2018年1月9日17:06:47 第二章 一切都是对象 Java语言假设我们只进行面向对象的程序设计. 2.1 用引用操纵对象 每种编程语言都有自己的操纵内存元素的方式 操纵内存元素的方 ...

  3. ajax 处理请求回来的数据

    比如接口 /test, 请求方式get, 请求过来的数据要处理在container 里,如下代码 $.get("/test", {}, function(result){ $(&q ...

  4. laravel 生成 key

    把 .env.example 文件 复制并重命名为 .env 文件 命令行运行 php artisan key:generate php artisan key:generate

  5. div 初始高度,并随内容高度变化

    前几天做个邮箱系统,其中在内容的div设置了高度为200px; 可是在内容大于200高度后就出现了内容的溢出. 如图: 查完资料够才知道css有个min-height; 设置div的初始化高度,设置属 ...

  6. [51nod1206]Picture

    给你一坨矩形,问这些矩形组成的所有多边形的周长之和. 分别求竖着的边和横着的边. 离散化后线段树,维护当前行(或者列)有多少没在多边形里的,添加矩形就变成添加.删除线段. 每次加线段或删线段时累加一下 ...

  7. 2017ecjtu-summer training #1 UVA 12050

    A palindrome is a word, number, or phrase that reads the same forwards as backwards. For example, th ...

  8. ACM_素数筛选

    /* *素数筛法,判断小于MAXN的数是不是素数. *notprime是一张表,为false表示是素数,true表示不是素数 */ const int MAXN = 1000010; bool not ...

  9. solr6.5的安装与配置

    环境介绍 solr 6.5 tomcat8 jdk1.8 win7系统 一.下载solr安装包 下载地址:http://www.apache.org/dyn/closer.lua/lucene/sol ...

  10. 《JavaScript设计模式与开发实践》知识点笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC" } p.p2 { margin: 0.0px ...