我有一些存储过程,我插入到我的SQL Server数据库中。我想将此GUID返回以供将来插入使用,或者我将其用作。
我知道我可以在程序中生成GUID并从中返回它,但是我想避免在那里生成它,因为它具有主键(guid)行的默认值。我记得像SCOPE_IDENTITY这样的函数用于返回刚刚使用的标识列,与此类似的任何GUID?
感谢帮助!谢谢:)
答案 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将不会被冒犯;如果没有明确提供该值,则会出现回退。