Scope_Identity()、Identity()、@@Identity 和 Ident_Current() 之间有

2023-07-18数据库问题
5

本文介绍了Scope_Identity()、Identity()、@@Identity 和 Ident_Current() 之间有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我知道 Scope_Identity()Identity()@@IdentityIdent_Current() 所有获取标识列的值,但我很想知道其中的区别.

I know Scope_Identity(), Identity(), @@Identity, and Ident_Current() all get the value of the identity column, but I would love to know the difference.

我遇到的部分争议是,它们所指的适用于上述这些功能的范围是什么意思?

Part of the controversy I'm having is what do they mean by scope as applied to these functions above?

我也喜欢使用它们的不同场景的简单示例?

I would also love a simple example of different scenarios of using them?

推荐答案

  • @@identity 函数返回在同一会话中创建的最后一个身份.
  • scope_identity() 函数返回在同一会话和同一范围内创建的最后一个身份.
  • ident_current(name) 返回为任何会话中的特定表或视图创建的最后一个标识.
  • identity() 函数不用于获取身份,而是用于在 select...into 查询中创建身份.
    • The @@identity function returns the last identity created in the same session.
    • The scope_identity() function returns the last identity created in the same session and the same scope.
    • The ident_current(name) returns the last identity created for a specific table or view in any session.
    • The identity() function is not used to get an identity, it's used to create an identity in a select...into query.
    • 会话是数据库连接.作用域是当前查询或当前存储过程.

      The session is the database connection. The scope is the current query or the current stored procedure.

      scope_identity()@@identity 函数不同的情况是,如果您在表上有触发器.如果您有一个插入记录的查询,导致触发器在某处插入另一条记录,scope_identity() 函数将返回查询创建的标识,而 @@identity 函数将返回触发器创建的标识.

      A situation where the scope_identity() and the @@identity functions differ, is if you have a trigger on the table. If you have a query that inserts a record, causing the trigger to insert another record somewhere, the scope_identity() function will return the identity created by the query, while the @@identity function will return the identity created by the trigger.

      因此,通常您会使用 scope_identity() 函数.

      So, normally you would use the scope_identity() function.

      这篇关于Scope_Identity()、Identity()、@@Identity 和 Ident_Current() 之间有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

      The End

相关推荐

Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
2025-01-02 数据库问题
151

按天分组的 SQL 查询
SQL query to group by day(按天分组的 SQL 查询)...
2024-04-16 数据库问题
77

SQL 子句“GROUP BY 1"是什么意思?意思是?
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
2024-04-16 数据库问题
62

MySQL groupwise MAX() 返回意外结果
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
2024-04-16 数据库问题
13

MySQL SELECT 按组最频繁
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
2024-04-16 数据库问题
16

在 Group By 查询中包含缺失的月份
Include missing months in Group By query(在 Group By 查询中包含缺失的月份)...
2024-04-16 数据库问题
12