分享个值得注意的问题,你还在使用@@IDENTITY吗?

超级大笨狼 2010-09-29 01:55:59
分享个值得注意的问题
@@IDENTITY 得到的是全局最后一个表插入的id
当有触发器插入别的表的时候会,导致得到的id是其他表。
为了解决这个问题,采用
select scope_identity()
代替@@IDENTITY
...全文
326 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
luzhengkun 2013-05-15
  • 打赏
  • 举报
回复
select IDENT_CURRENT('t2') 这个在插入失败后,查出的值还是自增长了
hchjjun 2010-10-19
  • 打赏
  • 举报
回复
全局变量问题,自己做程序也需要少用的
jenny0810 2010-10-19
  • 打赏
  • 举报
回复
伴老思源 2010-10-12
  • 打赏
  • 举报
回复
受教了~
duoyiwen 2010-10-09
  • 打赏
  • 举报
回复
学习了。顶。。
SamuDra 2010-10-08
  • 打赏
  • 举报
回复
牢记!!!

select scope_identity()
代替@@IDENTITY
myjavamosquito 2010-10-08
  • 打赏
  • 举报
回复
学习了。顶。。
billpu 2010-09-29
  • 打赏
  • 举报
回复
虽然这个有点过期很久前就知道了 技术贴还是要帮顶
abuying 2010-09-29
  • 打赏
  • 举报
回复
都是触发器 惹的
gentlelhn 2010-09-29
  • 打赏
  • 举报
回复
select scope_identity()
代替@@IDENTITY
牢记!!!
ForFumm 2010-09-29
  • 打赏
  • 举报
回复
Rotel-刘志东 2010-09-29
  • 打赏
  • 举报
回复
select scope_identity()
代替@@IDENTITY
牢记
加油馒头 2010-09-29
  • 打赏
  • 举报
回复
不错 谢谢分享
王向飞 2010-09-29
  • 打赏
  • 举报
回复
所以说触发器能少用就少用。
超级大笨狼 2010-09-29
  • 打赏
  • 举报
回复
@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函数,因为他们都返回插入到表的 IDENTITY 列的最后一个值。
SQLCenter 2010-09-29
  • 打赏
  • 举报
回复
作用域问题
vivai2010 2010-09-29
  • 打赏
  • 举报
回复
联机帮助有说明的
ws_hgo 2010-09-29
  • 打赏
  • 举报
回复
# --(2)@@identity,scope_identiuty()之间的区别  
# /*
# 对于@@identity而言,它返回的是当前会话中任何作用域内的最后插入的一个标识值
# 对于scope_identity()而言,它返回的是当前作用域内插入的标识值
# */
# create table t1
# (
# id int identity(1,1),
# col int
# )
# create table t2
# (
# id int identity(100,1),
# col int
# )
# create trigger tg_t1 on t1
# for insert
# as
# insert into t2 select col from inserted
# go
# insert into t1 select 2
# select @@identity,scope_identity()
#
加载更多回复(2)

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧