@@IDENTITY详细测试
今天看数据库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详细测试的更多相关文章
- [转]IIS的各种身份验证详细测试
本文转自:http://www.cnblogs.com/chnking/archive/2007/11/20/965553.html#_Toc183326163 一. IIS的身份验证概述 1. ...
- 根据 Promise/A+ 和 ES6 规范,实现 Promise(附详细测试)
Promise 源码 https://github.com/lfp1024/promise promise-a-plus const PENDING = 'PENDING' const REJECTE ...
- Spark1.5.1的安装与部署 每一步详细测试截图
转载或借鉴请注明转自 http://www.cnblogs.com/FG123/p/5101733.html 谢谢! 1.安装Spark之前需要先安装Java,Scala及Python(个人喜欢用p ...
- SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试
1. 背景 SQL Server 搭建AlwaysOn后,我们就希望程序连接时使用虚拟的侦听IP(Listener IP),而不再是主Server 的IP.如果我们有采用中间件,则可以在配置中,直接用 ...
- Percona XtraBackup 关于 MySQL备份还原的详细测试
一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...
- Linux磁盘的性能详细测试办法
# 测试写入20Gb文件sync && time -p bash -c "(dd if=/dev/zero of=test.dd bs=1000K count=20000; ...
- CDH安装详细测试正确
1. CDH简介 简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到 ...
- 详细讲解 A/B 测试关键步骤,快来检查下还有哪些疏漏的知识点
作为一种对照实验方法,A/B 测试通过比较两个 (或多个) 不同版本之间的差异来验证假设是否正确.该方法将特定测试组从实验其余部分中独立出来,从而得出可靠结果.在被测人不知情且测试场景真实的情况下,A ...
- html5中manifest特性测试
测试环境和工具 chromium 18.0.1025.151 (开发编译版 130497 Linux) Ubuntu 11.04 一.测试内容 1.A页面manifest缓存的js文件,B页面不 ...
随机推荐
- Git-分布式版本控制系统(一)
Git可以在Linux.Unix.Mac和Windows Git 的安装 mac [xcode, 菜单"Xcode"->"Preferences",在弹出 ...
- Linux常用命令之文件处理命令
注:由于Linux操作系统有些目录不能轻易操作,特此建议大家在家目录home,或root.tmp目录下练习命令,以免带来不必要的损失 一.查询目录中的内容:ls 命令格式:ls [选项] [文件或目录 ...
- 移动端吸顶(iOS与安卓)
有的时候经常会遇到移动端吸顶效果,开始我也只是上网查了一下,分别有iOS和android两种样式,如下: /*!*Android*!*/ .head { position: fixed; top: 0 ...
- python2.7源码编译安装
最近学习docker容器,因为平时用的linux发型版都是centos6系列,所有pull了一个centos:6.6的景像,运行景像,进入容器后,发现其默认的python环境是2.6,为了更好的兼容我 ...
- 从头开始基于Maven搭建SpringMVC+Mybatis项目(1)
技术发展日新月异,许多曾经拥有霸主地位的流行技术短短几年间已被新兴技术所取代. 在Java的世界中,框架之争可能比语言本身的改变更让人关注.近几年,SpringMVC凭借简单轻便.开发效率高.与spr ...
- 新浪新闻页面抓取(JAVA-Jsoup)
1.使用gradle建立工程: 工程格式如下: include ':spider-demo' rootProject.name = 'my-spider-demo' settings def void ...
- Spring(一)Spring的第一滴血
前言 开始工作了,但是一进来公司本来是做爬虫和数据分析的,但是走了一个后端的,导致我必须要去顶替他的工作.因为这个项目使用的是Spring. SpringMVC.Hibernate所以我又要去回忆一下 ...
- BZOJ 1316: 树上的询问 (点分治+set)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1316 因为只要求存在某条路径长度为K,所以点分,然后用set判断差值是否在set中就可以了. ...
- poj1258prim算法
/*poj 1258 *题意:有若干个农场,现需要将各个农场用光纤连接起来,各个农场之间连接的光纤长度也许不同, *要求求出使得将所有农场连接起来的最短光线长度 *算法分析:使用矩阵将各个农场之间的光 ...
- python笔记二(mysql数据库操作)
python2.x使用MySQLdb python3.x使用pymysql代替MySQLdb 不过我使用的是python3.5,MySQLdb还是可以在python3.5使用的. #!/usr/bin ...