社区
MS-SQL Server
帖子详情
使用 @@identity 返回刚才插入的自增列的ID值,总是出现错误。
暴走的车轮
2011-03-30 11:04:24
使用@@identity 返回刚刚插入的值,总是返回错误,使用DBCC CHECKIDENT修正后,正常几个,一会又发现错误了,总是比刚插入的ID值大。。。。。什么原因啊????
...全文
182
9
打赏
收藏
使用 @@identity 返回刚才插入的自增列的ID值,总是出现错误。
使用@@identity 返回刚刚插入的值,总是返回错误,使用DBCC CHECKIDENT修正后,正常几个,一会又发现错误了,总是比刚插入的ID值大。。。。。什么原因啊????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
你的语句是怎样的!
sql 语句查询
自增
列
业务场景:有表A,A表
ID
列
自增
,现向A表
插入
一条数据,需获取新增
列
的
ID
值
。 1.获取一条数据的
ID
值
: @@
Id
entity
利用全局变量 作用:获得最后一条变更数据的
自增
列
值
。 例:INSERT INTO A (Name,Age,Sex)values('张三','12','男');select @@
ID
ENTITY
as
ID
; 结果: 相似的有SCOPE
@@
ID
ENTITY
是否总能保证
插入
语句执行后的
ID
是正确的?
这两天CSDNBlog问题不断啊!今天venjiang老大忙里偷闲去群里骂我们, 搞了个难题考我们。出题如下:@@
ID
ENTITY
是否总能保证
插入
语句执行后的
ID
是正确的?(这描述的不清晰哦,云里雾里的揣摩老大的意思ing....)我想了想(因为我们一直
使用
inser into table ,select @@
ID
ENTITY
这样的语句
返回
插入
的数据
ID
,并且从没碰到过
返回
的
ID
与数据
mysql
id
entity
获取_MySQL获取最后
插入
行
ID
的方法
我们在写数据库程序的时候,经常会需要获取刚
插入
记录的
ID
以进行下一步操作, 一般情况下获取刚
插入
的数据的
id
,
使用
select max(
id
) from table 是可以的,但是在多线程的时候这种方法会
出现
错误
,本文总结了MySQL获取最后
插入
行
ID
最常用的三种方法。(1) getGeneratedKeys()方法:下面是
使用
这种方法的程序片断:Connection conn = ;Serial...
MSSQL中全局变量@@
id
entity
与方法scope_
id
entity
()的区别
1.@@
ID
ENTITY
既然是全局变量(包括但不限于@@
id
entity
)那么
返回
的是最后一次表
自增
列
插入
的
值
有时候数据库中我们需要
使用
存储过程
返回
当前操作表的
ID
如果
使用
@@
id
entity
全局变量显然是不合理的因为数据库执行的是并发操作 你不能确定同时在同一个数据库中有其他对表的
插入
操作且含有
自增
列
,如果这个时候
返回
很可能
出现
错误
,导致
返回
的并不是我们当前 操作的表的
ID
而
SQL SERVER
使用
触发器的情况下@@
ID
ENTITY
不准确的问题
@@
ID
ENTITY
是
返回
最后
插入
的标识
值
的系统函数。在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@
ID
ENTITY
中包含语句生成的最后一个标识
值
。 如果语句未影响任何包含标识
列
的表,则 @@
ID
ENTITY
返回
NULL。 如果
插入
了多个行,生成了多个标识
值
,则 @@
ID
ENTITY
将
返回
最后生成的标识
值
。 我们常用@@
ID
ENTI...
MS-SQL Server
34,875
社区成员
254,639
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章