切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
SQL Server
Redis
MySQL
其它
Oracle
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
数据库
SQL Server 全局变量与系统函数之@@IDENTITY和SCOPE_IDENTITY()使用
### SQL中@@IDENTITY与SCOPE_IDENTITY()使用区别 |参数/函数|说明| |--|--| |@@IDENTITY|在一个命令中是全局的,@@IDENTITY会在整个命令中有效,两个命令之间非全局互不会受影响| |SCOPE_IDENTITY()|作用域有效,不能穿透到作用域外来,一个命令中可能包含多个作用域的执行,SCOPE_IDENTITY()不会影响本作用域外的执行结果| > __作用域:__指一个存储过程,函数或触发器 __命令:__是客户端一次要执行的SQL集合,它可以是一条SQL指令,也可以是多条,甚至可以是多条命令中夹杂着多个作用域 __创建代码示例:__ 创建测试用的存储过程: ``` SQL ALTER PROCEDURE [dbo].[TestEntityVlaue] @Name VARCHAR(20) AS BEGIN INSERT INTO [dbo].[User] ([Name], [Sex], [Birthday], [Address], [Alias], [Position]) VALUES (@Name, 1, '2020-12-17 14:22:33.000', '蜀', '孝直', '谋士') SELECT @@IDENTITY IDENTITY_1, SCOPE_IDENTITY() SCOPE_IDENTITY_1, @Name UserName, GETDATE() WAITFOR DELAY '00:00:05' INSERT INTO [dbo].[Customer] ([Name], [Age], [Sex], [CreateTime], [Intention]) VALUES ('庞统', 51, 1, GETDATE(), '汉中') SELECT @@IDENTITY IDENTITY_2, SCOPE_IDENTITY() SCOPE_IDENTITY_2, '庞统' UserName, GETDATE() END ``` 命令一: ```SQL EXEC TestEntityVlaue '法正' SELECT @@IDENTITY IDENTITY_3, SCOPE_IDENTITY() SCOPE_IDENTITY_3, GETDATE() ``` 命令二: ```SQL EXEC TestEntityVlaue 'hehe' SELECT @@IDENTITY IDENTITY_3, SCOPE_IDENTITY() SCOPE_IDENTITY_3, GETDATE() ``` __执行过程:__将两个条SQL命令分别放MSSM编辑窗口中,执行命令一后立马执行命令二,下图中箭头的指向是每条SELECT执行的顺序 __执行结果如下图:__  __示例说明:__ + 从执行结果中可以观察到,命令一和命令二中的SCOPE_IDENTITY()只在存储过程TestEntityVlaue中有效`(存储过程是一个作用域)`,无法影响到命令中的其它执行结果,也就是每条命令的第三个SELECT结果都是NULL。 + @@IDENTITY它即使在作用域外仍然有效,观察两个命令,在执行时间顺序上看,@@IDENTITY的全局只体现在本命令中,并不会影响到其它命令的执行结果,示例中的命令一和命令二是在不同的编辑页下执行的,属于两条命令,@@IDENTITY互不干扰。
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号