首先看看数据库里面的数据(S_Id为自增长标识列):

sql server 中返回上一次插入数据的ID(标识值)有三种方式:

第一种 @@IDENTITY:

1 insert into Student(S_StuNo,S_Name,S_Sex,S_Height)
2 values('013','卫庄','男','185');
3
4 select @@IDENTITY        -- 返回 17 

@@IDENTITY可以返回当前连接所有范围内插入最后所生成的标识值(包括任何调用的存储过程和触发器)。这个函数不只是可以适用于表。函数返回的值是最后表插入行生成的标识值。比如,现在有一个a表和一个b表,a表插入一条数据并触发 trigger (触发器)为b表插入一条数据,这时@@IDENTITY返回的其实是b表的标识列的值,因为@@IDENTITY它总是获取最后一条变更数据的自增字段的值。@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。

第二种 IDENT_CURRENT:

1 insert into Student(S_StuNo,S_Name,S_Sex,S_Height)
2 values('014','大司命','女','183');
3
4 select IDENT_CURRENT('Student')        --返回 18

IDENT_CURRENT()是一个函数,它有一个参数,它的参数就是指定要返回的标识列的值的表名。

IDENT_CURRENT()返回为任何会话和任何作用域中的特定表最后生成的标识值, 不受作用域和会话的限制,而受限于指定的表。

第三种 SCOPE_IDENTITY:

1 insert into Student(S_StuNo,S_Name,S_Sex,S_Height)
2 values('015','月儿','女','165');
3
4 select SCOPE_IDENTITY()        --返回 19

SCOPE_IDENTITY()返回为当前会话和当前作用域中的任何表最后生成的标识值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。

IDENT_INCR 用法:

1 -- IDENTITY(1,1) 第一个参数是表示,自增长的起始值,第二个参数表示自增长的增长量,即一次增长多少
2 SELECT IDENT_INCR('Student')    -- 返回 1 

SELECT IDENT_INCR('TableName'),一个参数,'TableName' 表示指定表的表名或视图名。

返回指定表的标识字段的增量值(就是自增值,每插入一条新数值序列增加的数值)。

IDENT_SEED 用法:

1 -- IDENTITY(1,1) 第一个参数是表示,自增长的起始值,第二个参数表示自增长的增长量,即一次增长多少
2 select IDENT_SEED('Student')    --返回 1

select IDENT_SEED('TableName'),一个参数,'TableName' 表示指定表的表名或视图名。

返回指定表的标识字段的种子值(即起始值,指定标识列从哪个数值开始)。

sql 获取标识递增的下一个值:

1 --获取当前标识递增的下一个值,即当前标识最大的值的下一个值
2 select IDENT_CURRENT('Student') + IDENT_INCR('Student')

sql 返回受上一语句影响的行数:

@@ROWCOUNT 返回受影响的行数(insert、select、delete、update):

1 select * from Student where S_Sex='女'
2
3 select @@ROWCOUNT    -- 返回 6

如果行数大于 20 亿,请使用 ROWCOUNT_BIG()。

1 select * from Student where S_Sex='男';
2
3 select ROWCOUNT_BIG()    --返回 9

rowcount 用法:

rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,例如下面的示例:

1 -- 查询出前 5 条数据
2 set rowcount 5
3 select * from Student where S_Sex='男';
4
5 -- 查询出后 5 条数据
6 set rowcount 5
7 select * from Student where S_Sex='男' order by S_Id desc;

也就是说在查询上面 rowcount 有着 top [number] 同样的效果。

要取消set rowcount的限定,只要设置 set rowcount 0 就可以了。

注意:set rowcount的限定对修改,删除一样有效。比如下面的示例:

1 set rowcount 3
2 update Student set S_BirthDate='2017-01-01'
3 where S_Id<20
4
5 select @@ROWCOUNT    --返回 3 
1 set rowcount 5
2 delete from Student where S_BirthDate is null
3
4 select @@ROWCOUNT    --返回 5
5
6 set rowcount 0
7
8 select * from Student

SQL Server返回插入数据的ID和受影响的行数相关推荐

  1. SQL返回受影响的行数

    最近做了一个功能需要知道对数据库做增删改操作是否成功,理我想那么我只要获取对数据库做操作后获取受影响的行数即可,因为如果成功的话,会返回受影响的行数. 可是怎么获取? (1)使用hibernateTe ...

  2. MyBatis的update返回值改为受影响的行数

    MyBatis的update返回值改为受影响的行数 一.背景: 项目中经常通过update的SQL语句进行更新数据,而在目前的框架中,mybatis是主流的框架,所以理解update的真实的返回值也显 ...

  3. Mybatis执行update,insert等语句返回的不是受影响的行数

    Mybatis执行update,insert等语句返回的不是受影响的行数 在我们日常开发中,使用Mybatis框架中,经常会根据update,或者其他操作的返回值判断执行是否成功. 如: 在执行以上语 ...

  4. oracle存储过程rowcount用法,Oracle带输入、输出参数的存储过程回来受影响的行数SQL%ROWCOUNT...

    当前位置:我的异常网» SQL » Oracle带输入.输出参数的存储过程回来受影响的行数 Oracle带输入.输出参数的存储过程回来受影响的行数SQL%ROWCOUNT www.myexceptio ...

  5. 【转载】mybaits的update、Insert、delete返回的是不是受影响的行数?

    转自:https://blog.csdn.net/benben683280/article/details/79645697 update操作 返回值 mybatis执行update()方法默认返回为 ...

  6. SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便

    在线工具 一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方 ...

  7. SQL Server 批量插入数据的两种方法(转)

    原文:http://blog.csdn.net/tjvictor/article/details/4360030 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数 ...

  8. 【转载】SQL Server 批量插入数据的两种方法

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...

  9. sql server从插入数据到用游标操作数据库(2/3部分)--用心造

    目录 前言: 一.插入 1.向course表中添加数据 2.向student表中添加数据 3.向student_course表中添加数据 4.向teacher表中添加数据 5.向teacher_cou ...

最新文章

  1. java bufferedwrite_Java BufferedWriter BufferedReader 源码分析
  2. Filter和Listener-学习笔记03【Filter案例】
  3. 取地址符和解引用符的区别_(&)和解引用(*)运算符的地址以及C中的指针...
  4. input输入框匹配数字(带两位小数) js--金额匹配
  5. 运维常见问题及解决方法汇总(持续更新...)
  6. ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory解决方案
  7. Java应用打包后运行需要注意编码问题
  8. 福建师范网络教育应用计算机,福建师范大学网络教育计算机应用基础课程期末考核答案.docx...
  9. 【算法竞赛进阶指南 0x31 质数】阶乘分解【唯一分解定理】
  10. Ubuntu 下串口调试工具
  11. 计算机office的好处,office2007精简版有什么优点?精简版优点介绍
  12. 熬夜总结的2022java面试题
  13. 手表无线充电控制芯片方案的原理分析主控SOP8外置挂个AO3400或SI2302
  14. 用Python画笑脸
  15. Ubuntu18.04 有线网络显示已连接但无法打开网页
  16. 科研热点|2022诺贝尔奖各领域奖项已揭晓(附获奖者详细信息)~
  17. Android性能优化系列篇(三):崩溃优化+卡顿优化
  18. Flash不同版本的下载安装及必要的系统组件未正常运行的解决办法
  19. 为地震中丧身的同胞哀悼
  20. spaceclaim脚本(线生成面体)

热门文章

  1. 用户运营之push和短信
  2. 形如:1/a 的分数称为单位分数。 可以把1分解为若干个互不相同的单位分数之和。
  3. vue 中的 ... (三个点的用法)
  4. 2020.9.2丨遗传图谱基础介绍
  5. 大数据技术原理与应用(林子雨)MOOC作业与检验答案
  6. android 异形按钮,Android 如何点击异形按钮
  7. WIN10 MDK Keil uVision5 cannot read project file 解决办法
  8. Nacos下载和安装
  9. python画图坐标重叠怎么办_Python学习第95课-多个数据在同一个坐标轴画图叠加
  10. 光模块价格由带宽还是距离决定_光模块传输距离估算方法