SQL Server返回插入数据的ID和为影响之行数

首先看望数据库里的多少(S_Id为打增长标识列):

图片 1

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

 

相关文章