使用 @@identity 返回刚才插入的自增列的ID值,总是出现错误。

暴走的车轮 2011-03-30 11:04:24
使用@@identity 返回刚刚插入的值,总是返回错误,使用DBCC CHECKIDENT修正后,正常几个,一会又发现错误了,总是比刚插入的ID值大。。。。。什么原因啊????
...全文
119 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
暴走的车轮 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ljking0731 的回复:]
你可能有做触发器或其他的值.此时@@identity 返回的是最后影响的那个表的自增ID.

把@@identity 改成scope_identity() 
[/Quote]

用了这个,已经可以了,谢谢~~~~
pt1314917 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kdalan 的回复:]
具体情况是这样,一个表A ,我向表A里插入数据并返回插入的ID,表A里有触发器向表B里插入数据。。。。
[/Quote]

把你的语句和触发器语句贴出来,大家看看
暴走的车轮 2011-03-30
  • 打赏
  • 举报
回复
具体情况是这样,一个表A ,我向表A里插入数据并返回插入的ID,表A里有触发器向表B里插入数据。。。。
暴走的车轮 2011-03-30
  • 打赏
  • 举报
回复
如果有触发器怎么解决?我在查询分析器里直接操作表插入一条数据并返回,跟插入的数据的ID也不同啊~~!
ljking0731 2011-03-30
  • 打赏
  • 举报
回复
你可能有做触发器或其他的值.此时@@identity 返回的是最后影响的那个表的自增ID.

把@@identity 改成scope_identity() 
nevergu 2011-03-30
  • 打赏
  • 举报
回复
如果有触发器等,你可能获取的是触发器返回的值。所以注意作用域。试试
SCOPE_IDENTITY( )

AcHerat 元老 2011-03-30
  • 打赏
  • 举报
回复
@@identity

返回当前会话插入到任意表生成的最后一个identity值(不受作用域限制)

也许别的地方还有插入数据发生!
AcHerat 元老 2011-03-30
  • 打赏
  • 举报
回复
你的语句是怎样的!

34,838

社区成员

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

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