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