在SQL Server 2000中获取最后插入的唯一标识符

8
OUTPUT子句与SQL Server 2005兼容,但与SQL Server 2000不兼容。如何将此命令转换为在SQL Server 2000中运行?
CREATE TABLE sample
(
 ID uniqueidentifier NOT NULL DEFAULT newid(),
 Title varchar(30) NOT NULL
)

INSERT INTO sample (Title)
OUTPUT INSERTED.ID
VALUES ('Test1')

我需要一个命令来检索ID,因为INSERT命令需要从存储过程中调用。

谢谢您的帮助!

1个回答

14
DECLARE @uid uniqueidentifier 
SET @uid  = newid()

INSERT INTO sample (ID, Title)
VALUES (@uid,'Test1')

SELECT @uid AS ID

1
这是一个通用的INSERT命令,适用于不同的表格(有些带有int IDENTITY(1,1),有些带有uniqueidentifier)。我需要使用DEFAULT newid() - Shay
@ShayN - 这是在 SQL Server 2000 中唯一的方法。对于 uniqueidentifier 列,没有等效的 OUTPUTSCOPE_IDENTITY()。虽然我想你可以通过向表添加一个 INSERT 触发器来模拟 OUTPUT 子句,该触发器执行 SELECT inserted.id,但这将适用于表上的所有 insert - Martin Smith
我已经在其他网站上看到了触发器的解决方案,但我无法使用它。我需要确认是否没有等效的解决方案。谢谢! - Shay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接