这是我的桌子。
Ticket(id int auto_increment,name varchar(50));
插入此表后,我想发送邮件的ID和名称.. 我怎样才能得到最后一个Inserted值。
帮助解决这个问题......
答案 0 :(得分:9)
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)
获取最后一条记录