Sql Server - 如何将最后一个id插入表中

mar*_*bas 0 sql sql-server

我正在尝试将最后一个id插入表中.我在用

SELECT IDENT_CURRENT('TABLE')
Run Code Online (Sandbox Code Playgroud)

但问题是它不返回最后插入的id,它返回最大插入id.

例如,如果我这样做:

INSERT INTO 'TABLA' (ID) VALUES (100)

SELECT IDENT_CURRENT('TABLE') returns 100
Run Code Online (Sandbox Code Playgroud)

但是如果我这样做的话

INSERT INTO 'TABLA' (ID) VALUES (50)

SELECT IDENT_CURRENT('TABLE') returns 100
Run Code Online (Sandbox Code Playgroud)

我想要50岁

我需要一个特定的表的ID,并且我在dinamically中生成id,所以它不是一个标识我该怎么做?

Phi*_*ler 5

从你的代码,它看起来像ID不为单位(自动递增)列,因此IDENT_CURRENT是不会做你期待什么.

如果你想找到最后插入行,你将需要一个代表插入时间日期时间列,然后你可以这样做:

SELECT TOP 1 [ID] FROM TABLEA ORDER BY [InsertedDate] DESC
Run Code Online (Sandbox Code Playgroud)

编辑:一些额外的说明:

  • 你InsertedDate列应该有一个默认设置为GETDATE(),除非你的应用程序,存储的特效或者任何你用它来执行插入将负责设定值
  • 我说你的ID不是身份/自动增加的原因是因为你要在其中插入一个值.只有在关闭身份插入时才可以执行此操作.