【发布时间】:2013-11-02 06:00:01
【问题描述】:
我遇到了问题。我使用 SQL Server 2008 Express。
当新行插入到表中时,IDENT_CURRENT 函数返回正确的值(最后插入的行 ID)。但是当最后插入的行被删除(DELETE FROM REPORT WHERE ID='last_inserted_id')时,IDENT_CURRENT 函数返回被删除行的 id。它不更新。
我需要从表中返回最后一个 id。
SELECT IDENT_CURRENT('report')
【问题讨论】:
-
IDENT_CURRENT工作得很好——你的期望是错误的。 SQL Server 中的标识值是从不“回收”的——一旦分发出去,它们就消失了,永远不会被重复使用。 -
谢谢。知道了。如何在任何会话和任何范围内获取最后一行 ID?
-
你需要这些信息做什么?标识是每个表 - 所以这样一个“全局”最高行 id 看起来真的不是很有用....
-
感谢您的回复。我的意思是每桌。不是全球性的。如果最后一行被删除,身份将永远不会反转。但是当我从表中删除最后一行时,ident_current 会给我最后的身份。但我需要获取最后一行 ID。如示例:在具有 id`s 的表中分别获取树行:[1,'a'],[2,'b'],[3,'c']。如果你得到最后一行ID,那么它是3。现在,删除最后一行并获取最后一行ID,所以它是2。如何实现它?谢谢
-
SELECT MAX(Rowid) FROM dbo.YourTable???
标签: sql sql-server sql-server-2008 last-insert-id