首页 > 数据库 >SQL数据库:SQL语句中的Select@@identity用法

SQL数据库:SQL语句中的Select@@identity用法

时间:2024-09-05 09:14:28浏览次数:3  
标签:IDENT 插入 作用域 Select CURRENT 标识 identity SQL IDENTITY

select @@identity的用法

 

使用select @@当最后一次插入记录时,identity自动生成ID

如果您使用存储过程,将非常简单,代码如下:SET @NewID=@@IDENTITY

说明:

在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 它包含了这个句子产生的最终标识值。如果这个句子不影响任何有标识列的表, @@IDENTITY 返回 NULL。若插入多行,则会产生多个标识值,@@IDENTITY 返回最终产生的标识值。如果该句子激发了一个或多个执行产生标识值的插入式触发器,则在执行后立即调用该句子 @@IDENTITY 将触发器产生的最终标识值返回。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务回滚, @@IDENTITY 以前的设置是否会恢复值。

返回插入表的 @@IDENTITY 列的最后一个值,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函数类似。

@@IDENTITY 和 SCOPE_IDENTITY 最后一个标识值将返回到当前会话所有表中生成的。但是,SCOPE_IDENTITY 返回值仅在当前作用域内, @@IDENTITY 不限于特定的作用域。

IDENT_CURRENT 受指定表格的限制,不受作用域和会话的限制。IDENT_CURRENT 返回特定表在任何会话和任何功能域生成的标识值。有关更多信息,请参见 IDENT_CURRENT。

示例

将下面的示例插入带标志列的表中,并使用 @@IDENTITY 新行中使用的标识值显示。

INSERT INTO infoclass (infoclass) VALUES ('Accountant')

此时,我们插入一个记录,我们使用语句获得标识值:

SELECT @@IDENTITY AS 'Identity'

我的表infoclass中有一个ID字段,它的原始值是14。插入新记录后,它自动产生值15。因此,上述命令执行后的返回值为:15。

下面说说怎么在.插入记录后的ID值在net中得到。

因为Sqlserver为我们提供了多个查询功能,这极大地促进了我们的工作。请参见:

Dim sql As String = "INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('A new job', 25, 100);" & _

"SELECT job_id FROM jobs WHERE job_id = @@IDENTITY"

Dim cmd As New SqlCommand(sql, cn)

从上面可以看出,Sqlcommand可以执行多个句子,在每个句子之间使用“;“分离。第一条执行插入,第二条返回最终插入记录的ID值。因为查询返回是单列的,而且值也是唯一的,ExecuteScalar可以用来获得:

Dim jobId As Integer = CInt(cmd.ExecuteScalar())A

2.insert into 自动插入id后,获得自动插入id(select @@identity)

 

操作后插入语句时,执行selectt @@identity可以自动生成identity

假如是sql server 最好使用select SCOPE_IDENTITY() as id

因为@@@identity的全局

同类也有IDENT__CURRENT(‘table’)

IDENT_CURRENT 返回任何会话和任何作用域中特定表最终生成的标识值。IDENT_CURRENT 受指定表格的限制,不受作用域和会话的限制。IDENT_CURRENT 返回任何会话和作用域中特定表产生的值。

@@IDENTITY 返回当前会话所有功能域中任何表最终生成的标识值。

SCOPE_IDENTITY 返回当前会话和当前作用域中任何表最终生成的标识值

SCOPE_IDENTITY 和 @@IDENTITY 返回当前会话中任何表中产生的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入当前作用域的值;@@IDENTITY 不限于特定的作用域。

 

转自www.tulingxueyuan.cn/tlzx/jsp/3641.html

标签:IDENT,插入,作用域,Select,CURRENT,标识,identity,SQL,IDENTITY
From: https://www.cnblogs.com/yantingguo/p/18397687

相关文章

  • MySQL——事务与存储过程(四)综合案例——存储过程应用
            通过一个应用案例让读者熟悉在实际开发中,创建并使用存储过程的完整过程。1.创建一个stu表stu表结构字段名数据类型主键外键非空唯一自增idINT(10)是否是是否nameVARCHAR(50)否否是否否classVARCHAR(50)否否是否否stu表数据idnameclass1Lucyclass12Tomc......
  • MySQL——事务与存储过程(二)存储过程的创建(5)流程控制的使用
        在编写存储过程时还有一个非常重要的部分——流程控制。流程控制语句用于将多个SQL语句划分或组合成符合业务逻辑的代码块。MySQL中的流程控制语句包括:IF语句、CASE语句LOOP语句、WHILE语句、LEAVE语句、ITERATE语句、REPEAT语句和WHILE语句。     ......
  • 基于Springboot的学生信息管理系统的设计与实现(包含源码、sql脚本、导入视频教程)
    ......
  • SQL 注入与绕 WAF
    文章目录简介分类联合查询布尔盲注报错注入时间盲注堆叠注入二次注入宽字节注入base64编码注入xff注入绕过大小写绕过双写绕过利用关键字all、distinct绕过编码绕过换行绕过添加库名绕过去重绕过利用反引号绕过利用脚本语言特性绕过二次编码绕过利用白名单绕过运行......
  • mysql 8.0 的 建表 和八种 建表引擎实例
    文章目录MySQL8.0中,主要有以下八种常见的建表引擎一、InnoDB引擎建表注意点建表知识点二、MyISAM引擎建表使用场景三、Memory引擎使用场景四、Archive引擎五、BLACKHOLE引擎一、特点二、适用场景三、注意事项六、MRG_MyISAM引擎MRG_MyISAM和MyISAM的区别......
  • Selector组件的用法
    文章目录知识回顾使用方法builder属性selector属性shouldRebuild属性child属性示例代码我们在上一章回中介绍了组件之间共享数据相关的内容,本章回中将继续介绍该内容.闲话休提,让我们一起TalkFlutter吧。知识回顾我们在前面章回中介绍了全局共享数据相关的内容,......
  • 第十讲:为什么我的MySQL会“抖”一下?
    目录第十讲:为什么我的MySQL会“抖”一下?图概:提出现实问题:SQL执行的时候特别快,有时变得特别慢原因:为什么有时会“flush”呢?第一种场景,粉板满了,记不下了。第二种场景,要记住的事情太多,自己快记不住了,找账本把这笔账先加进去。第三种场景是,生意不忙,打烊之后柜台没事,掌柜闲着也是闲......
  • MySQL常用窗口函数总和
    在MySQL中,窗口函数是一类用于在查询结果集中计算值的函数,允许用户根据数据行进行聚合或排序操作,同时保留行的详细信息。窗口函数在分析数据时非常有用,因为它们允许您在不缩小结果集的情况下对数据进行复杂的计算。常见的窗口函数包括:ROW_NUMBER()RANK()DENSE_RANK()NTILE(......
  • SQLServer事务复制延迟优化之多并行(多线程)复制
    事务复制的延迟在数据库的主从复制过程中,包括MySQL的主从复制,SQLServer的事务复制等等,鉴于主节点往往是并发写入的,而从节点(SQLServer中叫做订阅节点)在重放主节点的写操作的时候,往往会产生一定时间的延迟,如何降低这种复制延迟,并行复制或者说多线程复制是其中手段之一。 SQLServ......
  • 力扣SQL仅数据库(1068~1084)
    1068.产品销售分析1需求编写解决方案,以获取Sales表中所有sale_id对应的product_name以及该产品的所有year和price。输入:Sales表:+---------+------------+------+----------+-------+|sale_id|product_id|year|quantity|price|+---------+--------......