标签归档:标识列

mssql sqlserver 中 @@IDENTITY、SCOPE_IDENTITY、IDENT_CURRENT三个函数之间的区别说明


摘要:
下文讲述@@IDENTITY、SCOPE_IDENTITY、IDENT_CURRENT三个函数之间的区别
实验环境:sql server 2008 R2



@@IDENTITY、SCOPE_IDENTITY、IDENT_CURRENT三个函数之间的区别

@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT三个函数具有相同的功能,
它们都可以返回插入表的identity的最后一个值。

@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT三个函数的区别

@@IDENTITY 和 SCOPE_IDENTITY :
以上两个函数可以返回 当前会话中的所有表中生成的最后一个标识值。
SCOPE_IDENTITY:只在当前作用域中返回值。
@@IDENTITY:无特定作用域限制。


IDENT_CURRENT 不受作用域和会话的限制,但是此函数只返回指定表的标识值。
IDENT_CURRENT 函数可以获取任意回话和任意作用域中特定表获取标识列的值。
@@IDENTITY函数的作用域为本地服务器上的当前会话,当我们在链接服务器中执行sql脚本,则无法获取标识列,
但我们可以通过在链接服务器中执行远程存储过程的方式,返回标识信息

mssql sqlserver 向标识列中插入数据的方法分享


下文讲述指定标识列中的数据的方法分享,如下所示:
实验环境:sql server 2008 R2



一、不能向表 ‘xxxxxxxx’ 中的标识列插入显式值。”

在向标识列的表中插入数据时,常常会出现如下错误提示信息:
“当 IDENTITY_INSERT 设置为 OFF 时,不能向表 ‘xxxxxxxx’ 中的标识列插入显式值。”

     
CREATE TABLE [maomao365] (keyId int IDENTITY PRIMARY KEY, info nvarchar(30))
 
---向标识列中插入数据:
 
INSERT INTO [maomao365]  (keyId, info) VALUES(88, 'sql blog')
 
-----错误提示信息:“当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'products' 中的标识列插入显式值。”

---修改标识列属性
 SET IDENTITY_INSERT [maomao365] ON 

   INSERT INTO [maomao365]  (keyId, info) VALUES(88, 'sql blog')
    ---数据插入成功