【发布时间】:2015-12-19 01:55:49
【问题描述】:
我正在使用 SQL Server 2005 和一个表,该表的主键字段类型为 varchar(40)。我必须得到最后插入记录的主键值。我试过scope_identity 但它不起作用。我怎样才能得到这个?
【问题讨论】:
-
主键值是如何创建的?
标签: sql sql-server sql-server-2005 tsql
我正在使用 SQL Server 2005 和一个表,该表的主键字段类型为 varchar(40)。我必须得到最后插入记录的主键值。我试过scope_identity 但它不起作用。我怎样才能得到这个?
【问题讨论】:
标签: sql sql-server sql-server-2005 tsql
我找到了结果。
代码:
insert into T
output inserted.pk
values ('new item');
【讨论】:
如果您的 ID 是 varchar,我想它不是自动生成的,因此您应该在插入记录之前知道它。顺便说一句,您不能在插入记录后只选择您的 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)
【讨论】: