◎◎identity ,ident_current() ,scope_identity的区别

作用域:在SQLSERVER作用域就是一个模块-存储过程,触发器,函数或批处理
会话:  一个用户连接产生的所有上下文信息
相同点:都是返回最后插入的标识值
不同点:
               @@identity :返回当前会话最后一个标识值,不限于特定的作用域 ;
               ident_current('tablename'):返回任何会话,任何作用域中的指定表中生成的最后一个标识值 ; 
               scope_identity :返回当前会话当前作用域任何表生成的最后一个标识值 。  

舉例:

CREATE TABLE [dnt_postid] (
 [pid] [int] IDENTITY (1, 1) NOT NULL ,
 [postdatetime] [datetime] NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dnt_postid] WITH NOCHECK ADD
 CONSTRAINT [PK_dnt_postid] PRIMARY KEY  CLUSTERED
 (
  [pid]
 )  ON [PRIMARY]
GO

DEClARE @postid int

INSERT INTO [dnt_postid] ([postdatetime]) VALUES(GETDATE())

SELECT @postid=SCOPE_IDENTITY()

你可能感兴趣的:(◎◎identity ,ident_current() ,scope_identity的区别)