今天看数据库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. Python 内嵌函数运用(探究模块)

    Python库参考 http://python.org/doc/lib 1. 使用dir        #查看 函数的所有特性(以及模块的所有函数.类.变量等.) 一些以下划线开始,暗示(约定俗成) ...

  2. Swagger入门教程

    [译]5.41 Swagger tutorial 单击此处查看原文 更多概念参见:Implementing Swagger with your API docs 关于 Swagger Swagger能 ...

  3. sublime text3安装、注册及常用插件

    由于换电脑,重装系统等问题,总要重装sublime.每次都要查来查去,不如自己记下来,以后再装也方便. 一.下载 官网下载安装包(http://www.sublimetext.com/) :然后直接点 ...

  4. StackExchange.Redis学习笔记(五) 发布和订阅

    Redis命令中的Pub/Sub Redis在 2.0之后的版本中 实现了 事件推送的  发布订阅命令 以下是Redis关于发布和订阅提供的相关命令 SUBSCRIBE channel [channe ...

  5. C# 获取当前方法的名称空间、类名和方法名称

    1.(new StackTrace()).GetFrame(1) // 0为本身的方法:1为调用方法2.(new StackTrace()).GetFrame(1).GetMethod().Name; ...

  6. nohup—后端守护进程

    要将一个命令放到后台执行,我们一般使用nohup sh command & 为什么要nohup? 因为我用使用Scrt这种终端工具退出的时候会向我们在当前shell下启动的进程发生一个SIGH ...

  7. metasploit配置windows外网木马

    首先在命令端输入./ngrok tcp 2222然后会变成这样 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i ...

  8. HashMap 源码详细分析(JDK1.8)

    一.概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap.HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现.HashMap 允许 null 键和 null 值, ...

  9. 我的第六个网页制作:table标签

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. ACM_高次同余方程

    /*poj 3243 *解决高次同余方程的应用,已知 X^Y = K mod Z, 及X,Z,K的值,求 Y 的值 */ #include<cstdio> #include<cstr ...