【发布时间】:2012-09-25 11:21:27
【问题描述】:
这是我的桌子。
Ticket(id int auto_increment,name varchar(50));
插入此表后,我想将 id 和 name 发送到邮件.. 我怎样才能得到最后插入的值。
帮助解决这个问题...
【问题讨论】:
标签: sql sql-server-2008 jdbc
这是我的桌子。
Ticket(id int auto_increment,name varchar(50));
插入此表后,我想将 id 和 name 发送到邮件.. 我怎样才能得到最后插入的值。
帮助解决这个问题...
【问题讨论】:
标签: sql sql-server-2008 jdbc
SCOPE_IDENTITY()
我们可以从该表中获得最后插入的记录id的具有Identity属性的表将是这样的
SELECT SCOPE_IDENTITY()
或
但这不是一个安全的技术:
SELECT MAX(Id) FROM Ticket
或
这也不是一个安全的技术:
SELECT TOP 1 Id FROM Ticket ORDER BY Id DESC
【讨论】:
您应该使用SCOPE_IDENTITY() 来获取表中最后插入的主键值。我想它应该是ID 值。获得后,使用此 ID 执行 SELECT 即可。
还有@@IDENTITY,但使用其中一个或另一个可能会导致值不准确。
查看这些详细文章以获得更多见解、如何使用它们的详细说明、它们为何不同以及一些演示代码:
【讨论】:
对于 2008 R2 Service Pack 1 (Link) 之前的 SQL Server:
使用 SCOPE_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
【讨论】:
在您的表中添加自动增量字段,例如....索引(INT,AUTO INCREEMENT) 然后在插入或完成任何操作之前通过获取 max(index) 来获取最后一条记录
【讨论】: