SQL SERVER 2008获得最后的插入值

时间:2012-09-25 11:21:27

标签: sql sql-server-2008 jdbc

这是我的桌子。

Ticket(id int auto_increment,name varchar(50));

插入此表后,我想发送邮件的ID和名称.. 我怎样才能得到最后一个Inserted值。

帮助解决这个问题......

4 个答案:

答案 0 :(得分:9)

查看:Scope_identity

SCOPE_IDENTITY()

从该表中获取Identity Property的表我们可以获得最后插入的记录ID,就像这样

SELECT SCOPE_IDENTITY()

但这不是一种安全的技术:

SELECT MAX(Id) FROM Ticket

这也不是一种安全的技术:

SELECT TOP 1 Id FROM Ticket ORDER BY Id DESC

答案 1 :(得分:4)

您应该使用SCOPE_IDENTITY()来获取表格中的最后一个主键插入值。我想它应该是ID值。完成后,使用此ID执行SELECT,然后就可以了。

还有@@IDENTITY,但使用其中一个或另一个可能会导致值不准确存在一些差异。

查看这些详细文章以获取更多见解,有关如何使用它们的详细说明,它们的不同之处以及一些演示代码:

答案 2 :(得分:3)

对于2008 R2 Service Pack 1之前的SQL Server(Link):

  

使用SCOPE_IDENTITY()和时,您可能会收到不正确的值   @@ IDENTITY

在这种情况下,OUTPUT子句是最安全的机制:

DECLARE @InsertedRows AS TABLE (Id int)
DECLARE @NewId AS INT
INSERT INTO HumanResources.Employees
  ( /* column names */)
OUTPUT Inserted.Id INTO @InsertedRows
  VALUES (/* column values */)
SELECT @NewId = Id FROM @InsertedRows

答案 3 :(得分:0)

在表中添加auto increement字段,如.... index(INT,AUTO INCREEMENT) 然后在插入或任何操作完成之前,通过获取max(index)

获取最后一条记录