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

Sql 如何获取最后插入的主键?,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我将SQL Server 2005与一个主键字段类型为varchar(40)的表一起使用。我必须获取最后插入的记录的主键值。我尝试了scope\u identity,但它不起作用。如何获取此信息?如果您的ID是varchar,我想它不是自动生成的,因此您应该在插入记录之前知道它。顺便说一句,你不能在插入记录后选择你的id吗? 大概是这样的: CREATE PROC InsertXXX( ... value parameters...) AS BEGIN INSERT ..... SELECT

我将SQL Server 2005与一个主键字段类型为
varchar(40)
的表一起使用。我必须获取最后插入的记录的主键值。我尝试了
scope\u identity
,但它不起作用。如何获取此信息?

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

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

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

如果可以通过对ID列进行排序来查找最后一条记录,则可以按如下操作:

SELECT Max(ID) FROM myTable
SELECT ID FROM MyTable WHERE CreationDate=(SELECT Max(CreationDate) FROM MyTable)
如果没有,您可以有一个DateTime字段(例如CreationDate),用于保存插入记录的时间。然后您可以执行以下操作:

SELECT Max(ID) FROM myTable
SELECT ID FROM MyTable WHERE CreationDate=(SELECT Max(CreationDate) FROM MyTable)
我发现了结果

代码:

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

如何创建主键值?这应该适合您。作用域\标识仅适用于标识密钥。