@@IDENTITY,SCOPE_IDENTITY,IDENT_CURRENT,吉祥3宝
来源:互联网 发布:windows10 内存优化 编辑:程序博客网 时间:2024/04/30 14:23
总结:
日常开发个人常用SCOPE_IDENTITY(),因为SCOPE只在当前的作用域返回值.
实际应用中应根据3个函数作用而定.
定义:
@@IDENTITY
返回最后插入的标识值的系统函数。
SELECT @@IDENTITY as 'IDENTITY';
IDENT_CURRENT
返回为某个会话和作用域中指定的表或视图生成的最新的标识值。
SELECT IDENT_CURRENT('表名') as 'IDENT_CURRENT';
SCOPE_IDENTITY
返回插入到同一作用域中的标识列内的最后一个标识值。一个范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
SELECT SCOPE_IDENTITY() as 'SCOPE_IDENTITY';
区别:
SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。
IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 可以返回任何会话和任何作用域中为特定表生成的标识值。
备注:
@@IDENTITY 返回最后生成的标识值。如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操作,那么,在语句执行后立即调用 @@IDENTITY 将返回触发器生成的最后一个标识值。如果对包含标识列的表执行插入操作后触发了触发器,并且触发器对另一个没有标识列的表执行了插入操作,则 @@IDENTITY 将返回第一次插入的标识值。
事例:
GO
IF EXISTS( SELECT * FROM Admin_User)
BEGIN
DROP TABLE Admin_User;
END
IF EXISTS( SELECT * FROM Test_Table)
BEGIN
DROP TABLE Test_Table;
END
GO
CREATE TABLE Admin_User
(
Account_ID int IDENTITY(1,1) not null, -- 用户ID
Login_Account nvarchar(30) not null, -- 用户帐号
Constraint PK_Admin_User Primary key(Account_ID)
);
GO
CREATE TABLE Test_Table
(
Test_ID int IDENTITY(100,1) not null, -- 测试ID
Constraint PK_Test_Table Primary key(Test_ID)
);
GO
--创建触发器
CREATE TRIGGER tigerAdmin_User_INSERT ON Admin_User FOR INSERT
AS
BEGIN
INSERT Test_Table DEFAULT VALUES
END;
GO
--插入数据
INSERT Admin_User(
Login_Account -- 用户帐号
)
VALUES(
'techtjh' -- 用户帐号
);
SELECT @@IDENTITY as 'IDENTITY';
SELECT SCOPE_IDENTITY() as 'SCOPE_IDENTITY()';
SELECT IDENT_CURRENT('Test_Table') as 'IDENT_CURRENT(Test_Table)';
SELECT IDENT_CURRENT('Admin_User') as 'IDENT_CURRENT(Admin_User)';
--则执行结果为 100,1,100,1
--新打开查询窗口 执行以下代码
SELECT @@IDENTITY as 'IDENTITY';
SELECT SCOPE_IDENTITY() as 'SCOPE_IDENTITY()';;
SELECT IDENT_CURRENT('Test_Table') as 'IDENT_CURRENT(Test_Table)';
SELECT IDENT_CURRENT('Admin_User') as 'IDENT_CURRENT(Admin_User)';
--则执行结果为 NULL,NULL,100,1
- @@IDENTITY,SCOPE_IDENTITY,IDENT_CURRENT,吉祥3宝
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
- IDENT_CURRENT ,@@IDENTITY, SCOPE_IDENTITY
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
- SCOPE_IDENTITY、IDENT_CURRENT、@@IDENTITY
- 区分 @@IDENTITY,SCOPE_IDENTITY,IDENT_CURRENT
- @@IDENTITY IDENT_CURRENT SCOPE_IDENTITY区别
- @@IDENTITY,SCOPE_IDENTITY,IDENT_CURRENT
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
- @@IDENTITY, SCOPE_IDENTITY, and IDENT_CURRENT
- @@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT【通俗易懂】
- 浅谈SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
- IDENT_CURRENT('表名')、@@IDENTITY、SCOPE_IDENTITY
- @@IDENTITY、IDENT_CURRENT、SCOPE_IDENTITY的区别
- IDENT_CURRENT ,@@identity,SCOPE_IDENTITY() 之间对比
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
- java中try catch finally与return的执行顺序
- ASM的磁盘创建过程
- 图片自动缩放 expression
- oracle 增量备份脚本
- ads编译时所发生的错误
- @@IDENTITY,SCOPE_IDENTITY,IDENT_CURRENT,吉祥3宝
- struts流程
- 第二课:Showing an application icon
- 数据库备份方案
- 经典语录
- [转载]p中影响编码的属性及其设置小结(contentType,pageEncoding,charset,setCharacterEncoding)
- log --fprintf()
- OneNote 2007 无法启动的问题
- 你真的了解html吗?--之meta标签介绍