从存储过程插入返回GUID

时间:2011-07-11 18:23:48

标签: sql-server-2008 stored-procedures primary-key guid

我有一些存储过程,我插入到我的SQL Server数据库中。我想将此GUID返回以供将来插入使用,或者我将其用作。

我知道我可以在程序中生成GUID并从中返回它,但是我想避免在那里生成它,因为它具有主键(guid)行的默认值。我记得像SCOPE_IDENTITY这样的函数用于返回刚刚使用的标识列,与此类似的任何GUID?

感谢帮助!谢谢:)

2 个答案:

答案 0 :(得分:5)

您可以使用insert语句中的output子句。

像这样从SP返回结果集。 ID是具有默认newid()的uniqueidentifier。

insert into YourTable(Col1)
output inserted.ID 
values (1)

或捕获到表变量,并在此之后执行您需要的操作。

declare @T table(ID uniqueidentifier)

insert into YourTable(Col1)
output inserted.ID into @T 
values (1)

select *
from @T

答案 1 :(得分:2)

不,没有SCOPE_GUID()或类似的。如果使用列上定义的默认值或者自己声明值并手动插入,为什么还要关心?如果您使用NEWSEQUENTIALID()我会理解,但对于NEWID(),我只想先创建它并手动插入它。这将允许您返回生成的值而无需再次查询表(您需要以其他方式标识新行)。如果您不使用默认值,SQL Server将不会被冒犯;如果没有明确提供该值,则会出现回退。