IDENT_CURRENT
返回为任何会话和任何作用域中的指定表最后生成的标识值。
语法
IDENT_CURRENT('table_name')
参数
table_name
是将要返回其标识值的表的名称。table_name 的数据类型为 varchar,没有默认值。
返回类型
sql_variant
注释
IDENT_CURRENT 类似于 Microsoft® SQL Server™ 2000 标识函数 SCOPE_IDENTITY 和 @@IDENTITY。这三个函数都返回最后生成的标识值。但是,它们在定义"最后"的作用域和会话上不同。
- IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
- @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
- SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
示例
下面的示例说明由 IDENT_CURRENT、@@IDENTITY 和 SCOPE_IDENTITY 返回的不同的标识值。
USE pubs
DROP TABLE t6
DROP TABLE t7
GO
CREATE TABLE t6(id int IDENTITY)
CREATE TABLE t7(id int IDENTITY(100,1))
GO
CREATE TRIGGER t6ins ON t6 FOR INSERT AS
BEGIN
INSERT t7 DEFAULT VALUES
END
GO
--end of trigger definition
SELECT * FROM t6
--id is empty.
SELECT * FROM t7
--id is empty.
--Do the following in Session 1
INSERT t6 DEFAULT VALUES
SELECT @@IDENTITY
/*Returns the value 100, which was inserted by the trigger.*/
SELECT SCOPE_IDENTITY()
/* Returns the value 1, which was inserted by the INSERT stmt 2 statements before this query.*/
SELECT IDENT_CURRENT('t7')
/* Returns value inserted into t7, i.e. in the trigger.*/
SELECT IDENT_CURRENT('t6')
/* Returns value inserted into t6, which was the INSERT statement 4 stmts before this query.*/
-- Do the following in Session 2
SELECT @@IDENTITY
/* Returns NULL since there has been no INSERT action so far in this session.*/
SELECT SCOPE_IDENTITY()
/* Returns NULL since there has been no INSERT action so far in this scope in this session.*/
SELECT IDENT_CURRENT('t7')
/* Returns the last value inserted into t7.*/
分享到:
相关推荐
insert into cj_t values(IDENT_CURRENT('xs_t'),3,66,1) insert into cj_t values(IDENT_CURRENT('xs_t'),4,75,1) insert into cj_t values(IDENT_CURRENT('xs_t'),5,73,1) insert into xs_t values('1','Tom','...
这里,`IDENT_CURRENT('TableXXX')`返回`TableXXX`表中的当前自动增长值,`IDENT_INCR('TableXXX')`返回该表的自增步长,默认情况下通常为1。因此,上述语句返回的是`TableXXX`表的下一个自增长ID。 ##### 2. MySQL...
正确理解和使用 `Identity` 及其相关的函数(如 `@@IDENTITY`、`SCOPE_IDENTITY()` 和 `IDENT_CURRENT()`),可以帮助开发人员更好地管理数据库中的数据。同时,在实际应用中还需注意并发控制、数据迁移和性能优化等...
与`@@IDENTITY`不同的是,`IDENT_CURRENT()`允许指定表名作为参数,从而可以更精确地控制返回哪个表的最后一条标识值。 #### 二、具体应用场景 假设我们有两个表,分别为`TableA`和`TableB`。其中`TableA`包含一个...
这里使用了`IDENT_CURRENT('User')`函数来查询最近一次对`User`表插入记录时生成的自动编号值。这个函数返回指定表的当前标识值,即使在不同事务中插入的记录也能正确获取。 接下来,代码中定义了一个名为`Chaos_...
SELECT IDENT_CURRENT('numeric', 6, 1) as id, userid, 3 as roleid INTO USER_ROLE1 FROM USER_INFO; ``` 这段代码用于从`USER_INFO`表中选择数据,并插入到新创建的临时表`USER_ROLE1`中。`IDENT_CURRENT`函数...
需要注意的是,`@@IDENTITY`、`SCOPE_IDENTITY()`和`IDENT_CURRENT`都只能用于获取最近插入的标识值,如果插入失败或事务被回滚,这些函数将不再返回之前生成的标识值,且不能回滚标识列的值。这可能导致标识列中的...
`@@IDENTITY`可能返回任何会话和任何作用域中的最后一个标识值,`SCOPE_IDENTITY`仅限于当前作用域,而`IDENT_CURRENT`则不受作用域和会话限制,但需要指定表名。 在进行多表操作时,尤其是在涉及触发器的情况下,...
SELECT IDENT_CURRENT('表名'); ``` #### 八、选择性复制表数据 - **将一个表的数据复制到另一个表**:可以使用`SELECT INTO`语句将一个表的数据复制到另一个新表中。 ```sql SELECT * INTO 新表名 FROM 原...
- 使用`SCOPE_IDENTITY()`、`@@IDENTITY`或`IDENT_CURRENT('table_name')`函数,但请注意它们的差异,例如`SCOPE_IDENTITY()`仅返回当前作用域内的最后生成的ID。 9. 通用分页存储过程 - 创建存储过程,接收页码...
- `IDENT_CURRENT('tableName')`:返回特定表的最后一个自增ID。 3. **使用动态SQL** 要排除自增列并处理非固定数据类型,你可以编写一个存储过程,生成动态的INSERT语句。首先,你需要获取表结构,然后构造...
这里,`ident_current()`函数返回给定表当前的自增值,`ident_incr()`返回增量,而`ident_seed()`返回初始值。 `DBCC CHECKIDENT`是一个非常有用的命令,用于检查和调整表的标识值。它的基本语法如下: ```sql ...
- `IDENT_CURRENT()`: 返回指定表的最后一个自增值,即当前已分配但尚未提交的ID。 - `IDENT_INCR()`: 返回自增列的增量值,通常是1,但也可能是其他用户定义的值。 - `IDENT_SEED()`: 返回自增列的初始种子值,...
总结来说,理解并正确使用 `@@IDENTITY`、`SCOPE_IDENTITY()` 和 `IDENT_CURRENT()` 这三个函数对于在SQL Server中处理自增ID至关重要,特别是当数据库设计涉及复杂的触发器和多表操作时。选择合适的函数能够确保你...
7. **内置系统函数**:如OBJECT_ID用于获取对象的ID,IDENT_CURRENT可以获取当前会话中任何表的最新标识值。 8. **游标函数**:SQL Server 2000虽然支持游标,但使用时应谨慎,因为它们可能会降低性能。CURSOR_...
- 使用`SCOPE_IDENTITY()`、`IDENT_CURRENT()`或`@@IDENTITY`函数可以获取最近插入的自增字段的值。`SCOPE_IDENTITY()`返回同一事务中最后一个语句生成的标识符,是最安全的选择。 9. **通用分页存储过程** - ...
SELECT @CurrentNo = IDENT_CURRENT('YourTable'); ``` 五、性能优化 1. 使用索引:确保用于排序的列上有合适的索引,以提高查询速度。 2. 避免全表扫描:合理设计存储过程,避免对整个表进行扫描。 3. 预估行数:...
- `IDENT_CURRENT()`: 返回最近生成的标识值。 - `@@ROWCOUNT()`: 返回最后一条SQL语句影响的行数。 - `DB_NAME()`: 返回当前数据库的名称。 7. **其他函数**: - `ISNULL()`: 如果表达式为NULL,返回替代值。 ...
3. **使用IDENT_CURRENT函数**:IDENT_CURRENT提供一个特定于表的标识值,它在所有作用域中都是全局的。与SCOPE_IDENTITY()不同的是,IDENT_CURRENT不局限于当前作用域,因此它对跨越多个作用域的会话也很有用。 4....