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

暴走的车轮 2011-03-30 11:04:24
使用@@identity 返回刚刚插入的值,总是返回错误,使用DBCC CHECKIDENT修正后,正常几个,一会又发现错误了,总是比刚插入的ID值大。。。。。什么原因啊????
...全文
104 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
暴走的车轮 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
你的语句是怎样的!
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2011-03-30 11:04
社区公告
暂无公告