`
neo
  • 浏览: 266558 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SCOPE_IDENTITY()、@@IDENTITY、IDENT_CURRENT()

阅读更多

 SQL Server 中,可以使用 SCOPE_IDENTITY()、 @@IDENTITY 、 IDENT_CURRENT() 来取得最后插入记录的值值,它们的区别在于:


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

直接使用 select  SCOPE_IDENTITY()


@@IDENTITY       返回在当前会话的所有表中生成的最后一个标识值,没有参数,直接使用 select  @@IDENTITY


IDENT_CURRENT()  返回为任何会话和任何作用域中的指定表最后生成的标识值, 其中的参数,是表名,例如 select IDENT_CURRENT('TRole')


分享到:
评论

相关推荐

    @@IDENTITY与SCOPE_IDENTITY()

    需要注意的是,`@@IDENTITY`、`SCOPE_IDENTITY()`和`IDENT_CURRENT`都只能用于获取最近插入的标识值,如果插入失败或事务被回滚,这些函数将不再返回之前生成的标识值,且不能回滚标识列的值。这可能导致标识列中的...

    Identity用法

    正确理解和使用 `Identity` 及其相关的函数(如 `@@IDENTITY`、`SCOPE_IDENTITY()` 和 `IDENT_CURRENT()`),可以帮助开发人员更好地管理数据库中的数据。同时,在实际应用中还需注意并发控制、数据迁移和性能优化等...

    sql Identity

    - 如果需要跨表引用`Identity`值,建议使用`SCOPE_IDENTITY()`或者`IDENT_CURRENT()`,以避免不必要的错误。 通过以上介绍可以看出,在处理数据库中的复杂数据关系时,合理运用`Identity`属性及其相关的全局变量...

    对有insert触发器表取IDENTITY值时发现的问题

    需要注意的是,`@@IDENTITY`、`SCOPE_IDENTITY`和`IDENT_CURRENT`虽然都与标识列的值有关,但它们的作用范围不同。`@@IDENTITY`可能返回任何会话和任何作用域中的最后一个标识值,`SCOPE_IDENTITY`仅限于当前作用域...

    使用SQL Server 获取插入记录后的ID(自动编号)

    总结来说,理解并正确使用 `@@IDENTITY`、`SCOPE_IDENTITY()` 和 `IDENT_CURRENT()` 这三个函数对于在SQL Server中处理自增ID至关重要,特别是当数据库设计涉及复杂的触发器和多表操作时。选择合适的函数能够确保你...

    asp中通过addnew添加内容后取得当前文章的自递增ID的方法

    而在.NET框架中,获取自递增ID的方法更加多样,可以使用SCOPE_IDENTITY()、@@IDENTITY、IDENT_CURRENT函数或者OUTPUT参数。每种方法都有其适用场景,选择合适的方法可以帮助开发者有效避免并发和作用域范围的问题。 ...

    将sqlserver表中指定数据转化为insert语句

    - `IDENT_CURRENT('tableName')`:返回特定表的最后一个自增ID。 3. **使用动态SQL** 要排除自增列并处理非固定数据类型,你可以编写一个存储过程,生成动态的INSERT语句。首先,你需要获取表结构,然后构造...

    sql server经典面试题

    - 使用`SCOPE_IDENTITY()`、`@@IDENTITY`或`IDENT_CURRENT('table_name')`函数,但请注意它们的差异,例如`SCOPE_IDENTITY()`仅返回当前作用域内的最后生成的ID。 9. 通用分页存储过程 - 创建存储过程,接收页码...

    sqlserver数据库著名上级面试题目

    - 使用`SCOPE_IDENTITY()`、`IDENT_CURRENT()`或`@@IDENTITY`函数可以获取最近插入的自增字段的值。`SCOPE_IDENTITY()`返回同一事务中最后一个语句生成的标识符,是最安全的选择。 9. **通用分页存储过程** - ...

    MYSQL中获取得最后一条记录的语句

    在其他数据库系统中,如SQL Server,类似的功能有 `SCOPE_IDENTITY()` 和 `IDENT_CURRENT()`。`SCOPE_IDENTITY()` 类似于MySQL的 `LAST_INSERT_ID()`,返回当前会话和事务中的最后一个自增ID,而 `IDENT_CURRENT()` ...

    ASP获取新增记录ID值的方法

    1. 使用`IDENT_CURRENT('TBName')`,它返回最后一次对指定表(`TBName`)的任何会话的INSERT操作产生的ID值,不受作用域限制。 2. 使用`@@IDENTITY`,它返回最后一条INSERT语句在任何表中生成的ID值,但可能受到多个...

    java获取新insert数据自增id的实现方法

    使用SCOPE_IDENTITY()可以获得插入某个IDENTITY字段的当前会话的值,而使用IDENT_CURRENT()会获得在某个IDENTITY字段上插入的最大值,而不区分不同的会话。 另外,我们还可以使用另一种更加便捷的方法:在JDBC追加...

    asp.net初级面试题2

    4. **自增主键的获取**:Insert后立即使用SCOPE_IDENTITY()、IDENT_CURRENT()或@@IDENTITY获取最新插入的自增主键。 5. **性能分析优化**:使用SQL Server Profiler、Database Engine Tuning Advisor等工具。 **XML...

    技术开发人员招聘笔试题

    在ASP.NET或C#中,可以通过数据库自增列或使用`SCOPE_IDENTITY()`、`IDENT_CURRENT()`等函数来获取刚插入记录的ID。 #### Xhtml的三种DOCTYPE及其意义 - **Strict**:禁止使用表现层标记和属性,如`<font>`。 - **...

Global site tag (gtag.js) - Google Analytics