首先看看数据库里面的数据(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和受影响的行数的更多相关文章

  1. sql server返回插入数据表的id,和插入时间

    假设要插入数据的数据表结构如下

  2. ASP.NET MVC与Sql Server交互, 插入数据

    在"ASP.NET MVC与Sql Server建立连接"中,与Sql Server建立了连接.本篇实践向Sql Server中插入数据. 在数据库帮助类中增加插入数据的方法. p ...

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

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

  4. SQL Server 批量插入数据的两种方法

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

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

    此文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor/archive/2009/07/18/4360030.aspx 在SQL Server 中插入一条 ...

  6. 转:SQL Server 批量插入数据的两种方法

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

  7. SQL Server循环插入数据

    --循环执行插入10000条数据declare @ID intdeclare @eigyousyocode nvarchar(16)declare @datet datetimedeclare @pl ...

  8. 连接sql server、插入数据、从数据库获取时间(C#)

    using System; using System.Data.SqlClient; namespace Test { //连接数据库 public class Connection { privat ...

  9. SQL Server 批量插入数据的方法

    运行下面的脚本,建立测试数据库和表. --Create DataBase create database BulkTestDB; go use BulkTestDB; go --Create Tabl ...

随机推荐

  1. poj 3348:Cows(计算几何,求凸包面积)

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6199   Accepted: 2822 Description ...

  2. React-Native 样式指南

    https://github.com/doyoe/react-native-stylesheet-guide

  3. WPF 渲染级别 (Tier)

    在WPF中,显卡的功能相差很大.当WPF评估显卡时,它会考虑许多因素,包括显卡上的RAM数量.对像素着色器(piexl shader)的支持(计算每个像素效果的内置程序,如透明效果),以及对顶点着色器 ...

  4. Android笔记——Activity中的回传数据案例(装备选择)

    1.创建程序: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  5. Spring_day04--SSH框架整合过程

    SSH框架整合过程 第一步 导入jar包 第二步 搭建struts2环境 (1)创建action,创建struts.xml配置文件,配置action (2)配置struts2的过滤器 第三步 搭建hi ...

  6. Android模拟器基本使用和常用工具介绍

    注:其中部分内容参考网上资源 1.Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的移动设备.Android的模拟器是基于QEMU开发的,QEMU是一个有名的开源虚拟机项目(详 ...

  7. IOS开发学习笔记039-autolayout 代码实现

    本文转载至 http://www.cnblogs.com/songliquan/p/4548206.html 1.代码实现比较复杂 代码实现Autolayout的步骤 利用NSLayoutConstr ...

  8. Android 防破解技术简介

    Android 防破解技术简介 这几年随着互联网的不断发展,Android App 也越来越多!但是随之而来的问题也越来越多,这其中比较令人头疼的问题就是:有些不法分子利用反编译技术破解 App,修改 ...

  9. SQL ALTER TABLE 命令

    SQL ALTER TABLE 命令 SQL ALTER TABLE 命令用于添加.删除或者更改现有数据表中的列. 你还可以用 ALTER TABLE 命令来添加或者删除现有数据表上的约束. 语法: ...

  10. VC/MFC中通过CWebPage类调用javascript函数(给js函数传参,并取得返回值)

    转自:http://www.cnblogs.com/javaexam2/archive/2012/07/14/2632959.html ①需要一个别人写好的类CWebPage,将其对于的两个文件Web ...