如何获取最后插入的主键?

时间:2009-09-14 03:56:10

标签: sql sql-server sql-server-2005 tsql

我正在使用带有类型为varchar(40)的主键字段的表的SQL Server 2005。我必须得到最后插入记录的主键值。我试过了scope_identity,但它没有用。我怎么能得到这个?

2 个答案:

答案 0 :(得分:3)

我找到了结果。

代码:

insert into T
output inserted.pk
values ('new item');

答案 1 :(得分:1)

如果您的ID是varchar,我想它不是自动生成的,因此您应该在插入记录之前知道它。 BTW你不能在插入记录后选择你的ID吗? 像这样:

CREATE PROC InsertXXX( ... value parameters...)
AS 
BEGIN
INSERT .....
SELECT ID FROM MyTable
END

更新:

如果你想在插入新记录之前知道最后插入的记录及其ID,根据ID值可能会有点困难。

如果您可以通过排序ID列找到最后一条记录,则可以按以下方式执行:

SELECT Max(ID) FROM myTable

如果没有,您可以拥有一个DateTime(例如CreationDate)来保存记录的插入时间。然后您可以执行以下操作:

SELECT ID FROM MyTable WHERE CreationDate=(SELECT Max(CreationDate) FROM MyTable)