为何使用@@identity、SCOPE_IDENTITY() 均获取不到id值?
我在一个项目里使用了SQL Server 2000,本希望使用@@identity、或SCOPE_IDENTITY() 来获取最新插入数据的主键值,前面一直有几个表是很好的能获取,但是到了后面复杂一点的功能上,就一直不能正确获取主键值,不管使用哪个返回ID的函数,调用时总是返回的空值。
但事实上数据确实已经新增了,程序上也没有在新增数据的时候报错,现在只能使用“Select ID From t_table order by ID DESC”这样的查询来返回新增的ID,但是我知道这样的查询可能会一下子提取很多的数据,影响到软件整体运行效率。
请问一下,我遇到的这个问题,使用@@identity、或SCOPE_IDENTITY() 获取不到最新插入的记录的ID值,是由于什么原因产生的?该如何解决?
但事实上数据确实已经新增了,程序上也没有在新增数据的时候报错,现在只能使用“Select ID From t_table order by ID DESC”这样的查询来返回新增的ID,但是我知道这样的查询可能会一下子提取很多的数据,影响到软件整体运行效率。
请问一下,我遇到的这个问题,使用@@identity、或SCOPE_IDENTITY() 获取不到最新插入的记录的ID值,是由于什么原因产生的?该如何解决?
...全文
相关推荐
使用SQL Server 获取插入记录后的ID(自动编号)
但如果存在这些情况,强烈建议使用 `SCOPE_IDENTITY()` 以确保获取的是期望表的最新插入ID。
@@IDENTITY与SCOPE_IDENTITY()
@@IDENTITY获取最近的标识值,可能包括触发器引起的其他表的插入SELECT @@IDENTITY AS 'Identity';-- 使用SCOPE_IDENTITY()获取当前作用域内的标识值,
sql语句返回主键SCOPE_IDENTITY()
在SQL编程中,当执行一个插入操作并期望立即获取新生成的主键值时,可以使用`SCOPE_IDENTITY()`和`SELECT @@IDENTITY`这两个函数。`SCOPE_IDENTITY()`是
java获取新insert数据自增id的实现方法
使用SCOPE_IDENTITY()可以获得插入某个IDENTITY字段的当前会话的值,而使用IDENT_CURRENT()会获得在某个IDENTITY字段上插入的最大值,而不区分不同的会话。
sql Identity
- 如果需要跨表引用`Identity`值,建议使用`SCOPE_IDENTITY()`或者`IDENT_CURRENT()`,以避免不必要的错误。


