SQL Server返回插入数据的ID和受影响的行数
首先看看数据库里面的数据(S_Id为自增长标识列):

sql server 中返回上一次插入数据的ID(标识值)有三种方式:
第一种 @@IDENTITY:
insert into Student(S_StuNo,S_Name,S_Sex,S_Height)
values('','卫庄','男',''); select @@IDENTITY -- 返回 17
@@IDENTITY可以返回当前连接所有范围内插入最后所生成的标识值(包括任何调用的存储过程和触发器)。这个函数不只是可以适用于表。函数返回的值是最后表插入行生成的标识值。比如,现在有一个a表和一个b表,a表插入一条数据并触发 trigger (触发器)为b表插入一条数据,这时@@IDENTITY返回的其实是b表的标识列的值,因为@@IDENTITY它总是获取最后一条变更数据的自增字段的值。@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
第二种 IDENT_CURRENT:
insert into Student(S_StuNo,S_Name,S_Sex,S_Height)
values('','大司命','女',''); select IDENT_CURRENT('Student') --返回 18
IDENT_CURRENT()是一个函数,它有一个参数,它的参数就是指定要返回的标识列的值的表名。
IDENT_CURRENT()返回为任何会话和任何作用域中的特定表最后生成的标识值, 不受作用域和会话的限制,而受限于指定的表。
第三种 SCOPE_IDENTITY:
insert into Student(S_StuNo,S_Name,S_Sex,S_Height)
values('','月儿','女',''); select SCOPE_IDENTITY() --返回 19
SCOPE_IDENTITY()返回为当前会话和当前作用域中的任何表最后生成的标识值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。
IDENT_INCR 用法:
-- IDENTITY(1,1) 第一个参数是表示,自增长的起始值,第二个参数表示自增长的增长量,即一次增长多少
SELECT IDENT_INCR('Student') -- 返回 1
SELECT IDENT_INCR('TableName'),一个参数,'TableName' 表示指定表的表名或视图名。
返回指定表的标识字段的增量值(就是自增值,每插入一条新数值序列增加的数值)。
IDENT_SEED 用法:
-- IDENTITY(1,1) 第一个参数是表示,自增长的起始值,第二个参数表示自增长的增长量,即一次增长多少
select IDENT_SEED('Student') --返回 1
select IDENT_SEED('TableName'),一个参数,'TableName' 表示指定表的表名或视图名。
返回指定表的标识字段的种子值(即起始值,指定标识列从哪个数值开始)。
sql 获取标识递增的下一个值:
--获取当前标识递增的下一个值,即当前标识最大的值的下一个值
select IDENT_CURRENT('Student') + IDENT_INCR('Student')
sql 返回受上一语句影响的行数:
@@ROWCOUNT 返回受影响的行数(insert、select、delete、update):
select * from Student where S_Sex='女' select @@ROWCOUNT -- 返回 6
如果行数大于 20 亿,请使用 ROWCOUNT_BIG()。
select * from Student where S_Sex='男'; select ROWCOUNT_BIG() --返回 9
rowcount 用法:
rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,例如下面的示例:
-- 查询出前 5 条数据
set rowcount 5
select * from Student where S_Sex='男'; -- 查询出后 5 条数据
set rowcount 5
select * from Student where S_Sex='男' order by S_Id desc;
也就是说在查询上面 rowcount 有着 top [number] 同样的效果。
要取消set rowcount的限定,只要设置 set rowcount 0 就可以了。
注意:set rowcount的限定对修改,删除一样有效。比如下面的示例:
set rowcount 3
update Student set S_BirthDate='2017-01-01'
where S_Id<20 select @@ROWCOUNT --返回 3
set rowcount 5
delete from Student where S_BirthDate is null select @@ROWCOUNT --返回 5 set rowcount 0 select * from Student
SQL Server返回插入数据的ID和受影响的行数的更多相关文章
- sql server返回插入数据表的id,和插入时间
假设要插入数据的数据表结构如下
- ASP.NET MVC与Sql Server交互, 插入数据
在"ASP.NET MVC与Sql Server建立连接"中,与Sql Server建立了连接.本篇实践向Sql Server中插入数据. 在数据库帮助类中增加插入数据的方法. p ...
- SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便
一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方案的速度 ...
- SQL Server 批量插入数据的两种方法
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍 SQL Server支持的两种批 ...
- SQL Server 批量插入数据的两种方法(转)
此文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor/archive/2009/07/18/4360030.aspx 在SQL Server 中插入一条 ...
- 转:SQL Server 批量插入数据的两种方法
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...
- SQL Server循环插入数据
--循环执行插入10000条数据declare @ID intdeclare @eigyousyocode nvarchar(16)declare @datet datetimedeclare @pl ...
- 连接sql server、插入数据、从数据库获取时间(C#)
using System; using System.Data.SqlClient; namespace Test { //连接数据库 public class Connection { privat ...
- SQL Server 批量插入数据的方法
运行下面的脚本,建立测试数据库和表. --Create DataBase create database BulkTestDB; go use BulkTestDB; go --Create Tabl ...
随机推荐
- WebService的初级学习
复习准备 1. Schema约束: 1.1 namespace相当于Schema文件的id: 1.2 targetNamespace属性用来指定schema文件的namespace的值; 1. ...
- Unity Shaders and Effects Cookbook (3-5) 金属软高光
书上这一节看得我头昏脑胀,数学渣表示自理不能-- 并且也不了解这个效果的实际意义. 先记录下来,后面真正看懂了再来补充具体理论. 通过一张纹理贴图,定义高光的形状,利用到的纹理贴图有三种 这里并非把纹 ...
- pl/sql developer导出数据到excel的方法
http://yedward.net/?id=92 问题说明:使用pl/sql developer导出数据到excel表格中是非常有必要的,一般的可能直接在导出的时候选择csv格式即可,因为该格式可以 ...
- 怎么隐藏MathType标尺
因为MathType公式编辑能力非常的好用,所以非常的受大家的欢迎.MathType用现有的模板可以直接输入输出各种公式,而且MathType中有着各式各样的数学符号满足了大家日常公式的需求,为大家的 ...
- 【黑金原创教程】【TimeQuest】【第六章】物理时钟与外部模型
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- Android 获取当前应用的版本号和当前系统的版本号
1.获取当前程序版本名 我们可以在AndroidManifest.xml中设置程序的版本号等,如android:versionName="1.0",那如果想在代码中获取这个版本号呢 ...
- Vue基础-作用域插槽-列表组件
Vue 测试版本:Vue.js v2.5.13 Vue 官网介绍作用域插槽时, 在 2.5.0+,slot-scope 能被用在任意元素或组件中而不再局限于 <template>. 作用域 ...
- HDU 2157 How many ways??(简单线性DP | | 矩阵快速幂)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2157 这道题目很多人的题解都是矩阵快速幂写的,矩阵快速幂倒是麻烦了许多了.先给DP的方法 dp[i][ ...
- R语言中获取当前目录
# 获取当前工作目录 getwd() # 设置工作目录 setwd()
- 通过js获取UserAgent写入数据库 js传值至php
借助cookie,cookie是js和php互相传值的纽带.