SQL server插入数据后,获取自增长字段的值

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

insert into Tb_People(uname,era,amount) values( ‘兆周‘,‘老年‘,‘10000‘)

  select @@identity

  --当运行完插入语句后,执行select   @@identity就可得到自动生成的id

  --如果是sql server 最好用select SCOPE_IDENTITY() as id

--因为@@identity全局的

select SCOPE_IDENTITY() as id

select IDENT_CURRENT (‘Tb_People‘)

select MAX(id) from Tb_People

--SCOPE_IDENTITY

--返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。

--IDENT_CURRENT

--返回为任何会话和任何作用域中的指定表最后生成的标识值。这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制,却会受到表的限制。

[email protected]@IDENTITY

--返回最后插入的标识值。

--体会:加上事务处理,两个函数一个变量没有本质区别。不加事务处理两个函数一个变量受到其他会话、作用域的影响不一样。

--一直以来都是使用@@identity来获得最后一个插入到表的记录的identity值,最近发现这种方法在某种情况是不可靠的,先来看看两个概念

--作用域:在SQL SERVER作用域就是一个模块-存储过程,触发器,函数或批处理

--会话: 一个用户连接产生的所有上下文信息

--相同点:都是返回最后插入的标识值

--不同点:

[email protected]@identity:返回当前会话最后一个标识值,不限于特定的作用域;

--ident_current(‘tablename‘):返回任何会话,任何作用域中的指定表中生成的最后一个标识值;

--scope_identity:返回当前会话当前作用域任何表生成的最后一个标识值 。

时间: 2024-11-07 07:37:41

SQL server插入数据后,获取自增长字段的值的相关文章

SQL Server 插入数据后获得自增主键值

通过SQLServer系统自带函数获取 String sql = "insert into goods values('" + TextBox1.Text + "'," + TextBox2.Text + ",0," + TextBox3.Text + ",'','" + DropDownList1.SelectedItem.Text + "','" + Session["username&quo

mybatis框架(6)---mybatis插入数据后获取自增主键

mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标签(可以一个或者多个:比如:女性,爱,钱等等),然后存储到数据库中.怎么存,肯定涉及到三张表,新闻表,标签表,新闻标签id关联表 新闻表插入数据简单,标签表插入数据简单.那新闻标签表呢,如何关联,那是不是需要新闻表和标签表插入数据的时候,返回它们的主键Id然后再存储到新闻标签表中. 这种场景还是蛮常

SQL Server插入数据和删除数据基础语句使用

首先在我的Student表中插入几条数据,由于我的表已经创建完成了,所以就没有创建表的 sql 语句了,不过可以看我的上一篇文章: http://www.cnblogs.com/Brambling/p/6649350.html 插入数据sql语句: 1 insert into Student(S_StuNo,S_Name,S_Sex,S_Height) 2 select '001','项羽','男','190' union 3 select '002','刘邦','男','170' union

关于SQL server 插入数据时语言和特殊字符的处理

问题描述: 当插入或者是修改数据时,当插入(修改)的字段中存在(韩文,日文)或者其他字符时,出现插入的字符变成了乱码或者是成堆的问号. 解决方法: 在 Microsoft SQL Server 中, 以下数据类型支持 Unicode 数据: nchar, nvarchar, ntext 使用SQL语句操作的时候应该注意以下问题: 原查询语句 Select * From TABLENAME Where field1 like '%xxx%' 使用 Unicode 数据类型的, 应该为: Selec

Sql Server中的标识列(自增长字段)

一.标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点: 1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值3.列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列. 由于以上特点,使得标识列在数据库的设计中得到广泛的使用. 二.标识列的组成创建一个标识列,通常要指定三个内容:1.类型(type)在SQL Server 2000中,标识列类型必须是数值类型,如下:de

sql server删除数据后空间无变化处理方法

删除数据库表 第一步: 执行 delete from doc.115sou.com        #删除数据,执行效率低 drop table doc.115sou.com          #删除表,效率一般 或 truncate table doc.115sou.com #清空表,效率高,推荐 执行完后发现空间大小无变化,没事,不着急 第二步: DBCC SHRINKDATABASE ( doc.115sou.com) 去看文件大小吧,是不是小了很多

SQL Server插入数据的几种方法(基础)

1 insert into table(field1,field2,...) values (value1,value2,...) --插入单条数据 2 3 insert into table(field1,field2,...) select value1,value2,... union select value1,value2,... --插入多条数据,不允许使用default 4 5 insert into table2(field1,field2,...) select field1,

SQL Server插入中文数据后出现乱码

原文:SQL Server插入中文数据后出现乱码 今天在做项目的过程中遇到如标题的问题,情况如下图: 数据库使用的是SQL Server2012版本,创建表的脚本如下: CREATE TABLE [dbo].[Type](  [TypeId] INT NOT NULL PRIMARY KEY,     [TypeName] NVARCHAR(50)NOT NULL,     [Description] NVARCHAR(255) NULL,     [CategoryId] INT NOT NU

Sql server 大数据量插入速度慢或丢失数据解决办法

问题描述:我的设备每秒2000条数据插入数据库,2个设备总共4000条,当在程序里面直接用insert语句插入时,两个设备同时插入大概总共能插入约2800条左右,数据丢失约1200条左右,找了好多解决方法,整理了两种效果比较明显的解决办法: 第一种:使用Sql Server函数: 1.将数据组合成字串,使用函数将数据插入内存表,后将内存表数据复制到要插入的表. 2.组合成的字符换格式:'111|222|333|456,7894,7458|0|1|2014-01-01 12:15:16;1111|