5

这是我的桌子。

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

插入此表后,我想将 id 和名称发送到邮件.. 我怎样才能获得最后插入的值。

帮助解决这个...

4

4 回答 4

9

调查:Scope_identity

SCOPE_IDENTITY()

从该表中具有标识属性的表我们可以获得最后插入的记录 id 将是这样的

SELECT SCOPE_IDENTITY()

或者

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

SELECT MAX(Id) FROM Ticket

或者

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

SELECT TOP 1 Id FROM Ticket ORDER BY Id DESC
于 2012-09-25T11:26:02.563 回答
4

您应该使用SCOPE_IDENTITY()在您的表上获取最后一个主键插入值。我想这应该是ID价值。一旦你有了它,SELECT使用这个 ID 就可以了。

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

查看这些详细文章以获得更多见解、如何使用它们的详细描述、它们为何不同以及一些演示代码:

于 2012-09-25T11:26:42.807 回答
3

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

使用 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
于 2012-09-27T10:34:49.503 回答
0

在您的表中添加自动增量字段,例如.... index (INT,AUTO INCREEMENT) 然后在插入或完成任何操作之前 c 通过获取 max(index) 来获取您的最后一条记录

于 2018-06-06T19:27:30.457 回答